aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2009-02-23 05:25:10 +0000
committerAlexey Shchepin <alexey@process-one.net>2009-02-23 05:25:10 +0000
commitb6208955f32245c300bde65a86da2ef4db9dbe54 (patch)
tree22d49669abea02ee0912db2b533a79d39031610b
parentFix a minor compilation warning and add EDoc comment (diff)
* src/web/ejabberd_http.erl: Added a workaround for inet:peername
returning 'ebadf' SVN Revision: 1910
-rw-r--r--ChangeLog5
-rw-r--r--src/web/ejabberd_http.erl14
2 files changed, 12 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index b4c50fb4c..f7863b148 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-23 Alexey Shchepin <alexey@process-one.net>
+
+ * src/web/ejabberd_http.erl: Added a workaround for inet:peername
+ returning 'ebadf'
+
2009-02-20 Badlop <badlop@process-one.net>
* src/ejabberd_listener.erl: When stopping a listener, don't stop
diff --git a/src/web/ejabberd_http.erl b/src/web/ejabberd_http.erl
index d62d67dda..815e918a7 100644
--- a/src/web/ejabberd_http.erl
+++ b/src/web/ejabberd_http.erl
@@ -381,6 +381,13 @@ process_request(#state{request_method = Method,
request_headers = RequestHeaders,
request_handlers = RequestHandlers} = State)
when (Method=:='POST' orelse Method=:='PUT') andalso is_integer(Len) ->
+ {ok, IP} =
+ case SockMod of
+ gen_tcp ->
+ inet:peername(Socket);
+ _ ->
+ SockMod:peername(Socket)
+ end,
case SockMod of
gen_tcp ->
inet:setopts(Socket, [{packet, 0}]);
@@ -400,13 +407,6 @@ process_request(#state{request_method = Method,
LQ ->
LQ
end,
- {ok, IP} =
- case SockMod of
- gen_tcp ->
- inet:peername(Socket);
- _ ->
- SockMod:peername(Socket)
- end,
Request = #request{method = Method,
path = LPath,
q = LQuery,