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 /src | |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/ejabberd_receiver.erl | 19 | ||||
-rw-r--r-- | src/web/ejabberd_http_poll.erl | 7 |
2 files changed, 21 insertions, 5 deletions
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. |