aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2011-03-10 11:00:32 +0100
committerMicael Karlberg <[email protected]>2011-03-10 11:00:32 +0100
commita8ac8764ae07fee3f8c45c98b11b8d1637128a58 (patch)
tree70feb8cf5f20af224891a8cf0a76ad48cb19fb13
parent8533b8bcae728783b1c066b9fecb96b1cc2eb03c (diff)
parent73f261d2f44a58fda92e3d6e035051c11c3e4521 (diff)
downloadotp-a8ac8764ae07fee3f8c45c98b11b8d1637128a58.tar.gz
otp-a8ac8764ae07fee3f8c45c98b11b8d1637128a58.tar.bz2
otp-a8ac8764ae07fee3f8c45c98b11b8d1637128a58.zip
Merge branch 'bd/mod_esi_binary' into bmk/inets/httpd/make_mod_esi_deliver_accept_binary_data/OTP-9123
-rw-r--r--lib/inets/doc/src/mod_esi.xml6
-rw-r--r--lib/inets/src/http_server/mod_esi.erl4
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/inets/doc/src/mod_esi.xml b/lib/inets/doc/src/mod_esi.xml
index 3c473d3f94..e063088eb4 100644
--- a/lib/inets/doc/src/mod_esi.xml
+++ b/lib/inets/doc/src/mod_esi.xml
@@ -41,7 +41,7 @@
<fsummary>Sends Data back to client.</fsummary>
<type>
<v>SessionID = term()</v>
- <v>Data = string() | io_list()</v>
+ <v>Data = string() | io_list() | binary()</v>
<v>Reason = term()</v>
</type>
<desc>
@@ -54,7 +54,9 @@
<note><p>Note
that if any HTTP-header fields should be added by the
script they must be in the first call to deliver/2 and the
- data in the call must be a string. Do not
+ data in the call must be a string. Calls after the headers
+ are complete may contain binary data to reduce copying
+ overhead. Do not
assume anything about the data type of SessionID, the
SessionID must be the value given as input to the esi
call back function that you implemented.</p></note>
diff --git a/lib/inets/src/http_server/mod_esi.erl b/lib/inets/src/http_server/mod_esi.erl
index 929185a67a..b85c479693 100644
--- a/lib/inets/src/http_server/mod_esi.erl
+++ b/lib/inets/src/http_server/mod_esi.erl
@@ -452,6 +452,10 @@ handle_body(Pid, ModData, Body, Timeout, Size, IsDisableChunkedSend) ->
?hdrt("handle_body - send chunk", [{timeout, Timeout}, {size, Size}]),
httpd_response:send_chunk(ModData, Body, IsDisableChunkedSend),
receive
+ {esi_data, Data} when is_binary(Data) ->
+ ?hdrt("handle_body - received binary data (esi)", []),
+ handle_body(Pid, ModData, Data, Timeout, Size + byte_size(Data),
+ IsDisableChunkedSend);
{esi_data, Data} ->
?hdrt("handle_body - received data (esi)", []),
handle_body(Pid, ModData, Data, Timeout, Size + length(Data),