diff options
| author | Alexey Shchepin <alexey@process-one.net> | 2007-05-07 17:52:35 +0000 |
|---|---|---|
| committer | Alexey Shchepin <alexey@process-one.net> | 2007-05-07 17:52:35 +0000 |
| commit | 396b945d207c8f131e8ac6b4881337967b939f19 (patch) | |
| tree | 0ddfdf897ec14a312ef45c30c5451a630b7cff90 | |
| parent | * src/web/ejabberd_http.hrl: Added "ip" field in the "request" (diff) | |
* src/ejabberd_receiver.erl: Workaround for inet_drv bug
* src/web/ejabberd_http_poll.erl: Added sockname/1 and peername/1
stubs
SVN Revision: 763
| -rw-r--r-- | ChangeLog | 7 | ||||
| -rw-r--r-- | src/ejabberd_receiver.erl | 19 | ||||
| -rw-r--r-- | src/web/ejabberd_http_poll.erl | 7 |
3 files changed, 27 insertions, 6 deletions
@@ -1,7 +1,12 @@ 2007-05-07 Alexey Shchepin <alexey@sevcom.net> + * src/ejabberd_receiver.erl: Workaround for inet_drv bug + + * src/web/ejabberd_http_poll.erl: Added sockname/1 and peername/1 + stubs + * src/web/ejabberd_http.hrl: Added "ip" field in the "request" - record + record (thanks to Jerome Sautret and Mickael Remond) * src/web/ejabberd_http.erl: Likewise 2007-05-03 Alexey Shchepin <alexey@sevcom.net> diff --git a/src/ejabberd_receiver.erl b/src/ejabberd_receiver.erl index 71a67723e..3b019a08c 100644 --- a/src/ejabberd_receiver.erl +++ b/src/ejabberd_receiver.erl @@ -258,11 +258,20 @@ code_change(_OldVsn, State, _Extra) -> activate_socket(#state{socket = Socket, sock_mod = SockMod}) -> - case SockMod of - gen_tcp -> - inet:setopts(Socket, [{active, once}]); - _ -> - SockMod:setopts(Socket, [{active, once}]) + PeerName = + case SockMod of + gen_tcp -> + inet:setopts(Socket, [{active, once}]), + inet:peername(Socket); + _ -> + SockMod:setopts(Socket, [{active, once}]), + SockMod:peername(Socket) + end, + case PeerName of + {error, _Reason} -> + self() ! {tcp_closed, Socket}; + {ok, _} -> + ok end. process_data(Data, diff --git a/src/web/ejabberd_http_poll.erl b/src/web/ejabberd_http_poll.erl index 01268b817..912865116 100644 --- a/src/web/ejabberd_http_poll.erl +++ b/src/web/ejabberd_http_poll.erl @@ -22,6 +22,7 @@ terminate/3, send/2, setopts/2, + sockname/1, peername/1, controlling_process/2, close/1, process/2]). @@ -76,6 +77,12 @@ setopts({http_poll, FsmRef}, Opts) -> ok end. +sockname(_Socket) -> + {ok, {{0, 0, 0, 0}, 0}}. + +peername(_Socket) -> + {ok, {{0, 0, 0, 0}, 0}}. + controlling_process(_Socket, _Pid) -> ok. |
