aboutsummaryrefslogtreecommitdiffstats
path: root/lib/inets/src/http_client/httpc_request.erl
diff options
context:
space:
mode:
authorMicael Karlberg <bmk@erlang.org>2011-03-07 14:52:30 +0100
committerMicael Karlberg <bmk@erlang.org>2011-03-07 14:52:30 +0100
commitdb29f9ede14ff5b8d747230fcad8ffa1b157f1e1 (patch)
tree0512f7a95f5425aa4afdb5dc8eddf2f303eae12b /lib/inets/src/http_client/httpc_request.erl
parent546d0fd69519682e92b6493b6d092e4591ae5010 (diff)
downloadotp-db29f9ede14ff5b8d747230fcad8ffa1b157f1e1.tar.gz
otp-db29f9ede14ff5b8d747230fcad8ffa1b157f1e1.tar.bz2
otp-db29f9ede14ff5b8d747230fcad8ffa1b157f1e1.zip
Adding missing "send loop" for raw sending.
Also fixed some of the documentation (types).
Diffstat (limited to 'lib/inets/src/http_client/httpc_request.erl')
-rw-r--r--lib/inets/src/http_client/httpc_request.erl52
1 files changed, 27 insertions, 25 deletions
diff --git a/lib/inets/src/http_client/httpc_request.erl b/lib/inets/src/http_client/httpc_request.erl
index 5386d1eb4a..0d602adb11 100644
--- a/lib/inets/src/http_client/httpc_request.erl
+++ b/lib/inets/src/http_client/httpc_request.erl
@@ -79,41 +79,43 @@ send(SendAddr, Socket, SocketType,
{settings, HttpOptions},
{userinfo, UserInfo}]),
- TmpHeaders = handle_user_info(UserInfo, Headers),
+ TmpHdrs = handle_user_info(UserInfo, Headers),
- {TmpHeaders2, Body} =
- post_data(Method, TmpHeaders, Content, HeadersAsIs),
+ {TmpHdrs2, Body} = post_data(Method, TmpHdrs, Content, HeadersAsIs),
- {NewHeaders, Uri} = case Address of
- SendAddr ->
- {TmpHeaders2, Path ++ Query};
- _Proxy ->
- TmpHeaders3 =
- handle_proxy(HttpOptions, TmpHeaders2),
- {TmpHeaders3, AbsUri}
- end,
-
- FinalHeaders = case NewHeaders of
- HeaderList when is_list(HeaderList) ->
- http_headers(HeaderList, []);
- _ ->
- http_request:http_headers(NewHeaders)
- end,
+ {NewHeaders, Uri} =
+ case Address of
+ SendAddr ->
+ {TmpHdrs2, Path ++ Query};
+ _Proxy ->
+ TmpHdrs3 = handle_proxy(HttpOptions, TmpHdrs2),
+ {TmpHdrs3, AbsUri}
+ end,
+
+ FinalHeaders =
+ case NewHeaders of
+ HeaderList when is_list(HeaderList) ->
+ http_headers(HeaderList, []);
+ _ ->
+ http_request:http_headers(NewHeaders)
+ end,
Version = HttpOptions#http_options.version,
do_send_body(SocketType, Socket, Method, Uri, Version, FinalHeaders, Body).
-do_send_body(SocketType, Socket, Method, Uri, Version, Headers, {DataFun, Acc})
- when is_function(DataFun, 1) ->
+do_send_body(SocketType, Socket, Method, Uri, Version, Headers,
+ {ProcessBody, Acc}) when is_function(ProcessBody, 1) ->
+ ?hcrt("send", [{acc, Acc}]),
case do_send_body(SocketType, Socket, Method, Uri, Version, Headers, []) of
ok ->
- data_fun_loop(SocketType, Socket, DataFun, Acc);
+ do_send_body(SocketType, Socket, ProcessBody, Acc);
Error ->
Error
end;
do_send_body(SocketType, Socket, Method, Uri, Version, Headers, Body) ->
+ ?hcrt("create message", [{body, Body}]),
Message = [method(Method), " ", Uri, " ",
version(Version), ?CRLF,
headers(Headers, Version), ?CRLF, Body],
@@ -121,16 +123,16 @@ do_send_body(SocketType, Socket, Method, Uri, Version, Headers, Body) ->
http_transport:send(SocketType, Socket, lists:append(Message)).
-data_fun_loop(SocketType, Socket, DataFun, Acc) ->
- case DataFun(Acc) of
+do_send_body(SocketType, Socket, ProcessBody, Acc) ->
+ case ProcessBody(Acc) of
eof ->
ok;
{ok, Data, NewAcc} ->
DataBin = iolist_to_binary(Data),
- ?hcrd("send", [{message, DataBin}]),
+ ?hcrd("send", [{data, DataBin}]),
case http_transport:send(SocketType, Socket, DataBin) of
ok ->
- data_fun_loop(SocketType, Socket, DataFun, NewAcc);
+ do_send_body(SocketType, Socket, ProcessBody, NewAcc);
Error ->
Error
end