]> granicus.if.org Git - ejabberd/commitdiff
improve ip fetching patch
authorChristophe Romain <christophe.romain@process-one.net>
Tue, 8 Jul 2008 10:17:50 +0000 (10:17 +0000)
committerChristophe Romain <christophe.romain@process-one.net>
Tue, 8 Jul 2008 10:17:50 +0000 (10:17 +0000)
SVN Revision: 1414

ChangeLog
src/web/ejabberd_http_poll.erl

index 6453c09870baaf0f10b5e30aecb0e9b168d6d344..5b82db9571e5009b3a03abe98c9eaebe87dbcf1e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-07-03  Christophe Romain  <christophe.romain@process-one.net>
+
+       * src/web/ejabberd_http_poll.erl: improve ip fetching patch
+
 2008-07-07  Badlop  <badlop@process-one.net>
 
        * src/Makefile.in: Spool, config and log dirs: writtable by owner,
index d93bec791c5cd435abdf3b66317321edc56cdbcd..1929b146462bc766faf085d6448338690cf9087c 100644 (file)
@@ -101,11 +101,9 @@ sockname(_) ->
     {ok, ?NULL_PEER}.
 
 peername({http_poll, FsmRef}) ->
-    gen_fsm:send_all_state_event(FsmRef, {peername, self()}),
-    %% XXX should improve that, but sync call seems not possible
-    receive
-       {peername, PeerName} -> {ok, PeerName}
-       after 1000 -> {ok, ?NULL_PEER}
+    case catch gen_fsm:sync_send_all_state_event(FsmRef, peername, 1000) of
+       {ok, IP} -> {ok, IP};
+       _ -> {ok, ?NULL_PEER}
     end;
 peername(_) ->
     {ok, ?NULL_PEER}.
@@ -238,10 +236,6 @@ handle_event({activate, From}, StateName, StateData) ->
                                                   }}
     end;
 
-handle_event({peername, From}, StateName, StateData) ->
-    From ! {peername, StateData#state.ip},
-    {next_state, StateName, StateData};
-
 handle_event(_Event, StateName, StateData) ->
     {next_state, StateName, StateData}.
 
@@ -309,6 +303,10 @@ handle_sync_event(http_get, _From, StateName, StateData) ->
     Reply = {ok, StateData#state.output},
     {reply, Reply, StateName, StateData#state{output = ""}};
 
+handle_sync_event(peername, _From, StateName, StateData) ->
+    Reply = {ok, {peername, StateData#state.ip}},
+    {reply, Reply, StateName, StateData};
+
 handle_sync_event(_Event, _From, StateName, StateData) ->
     Reply = ok,
     {reply, Reply, StateName, StateData}.