aboutsummaryrefslogtreecommitdiff
path: root/net/erlang_xmlrpc/files/patch-src_xmlrpc.erl
blob: 5cfb3e1878d814113368272af0d9363c54e63eb4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

$FreeBSD$

--- src/xmlrpc.erl.orig	Fri May 23 10:47:55 2003
+++ src/xmlrpc.erl	Fri May 23 10:47:57 2003
@@ -164,7 +164,14 @@
 
 get_payload(Socket, Timeout, ContentLength) ->
     inet:setopts(Socket, [{packet, raw}]),
-    gen_tcp:recv(Socket, ContentLength, Timeout).
+    get_payload(Socket, Timeout, ContentLength, []).
+
+get_payload(Socket, Timeout, 0, Payload) ->
+    {ok, lists:concat(lists:reverse(Payload))};
+
+get_payload(Socket, Timeout, ContentLength, Payload) ->
+    {ok, Bin} = gen_tcp:recv(Socket, 0, Timeout),
+    get_payload(Socket, Timeout, ContentLength - length(Bin), [Bin|Payload]).
 
 %% Exported: start_link/{1,5,6}