* src/ejabberd_receiver.erl: Avoid crash to appear in log, when trying to close a...
authorMickaël Rémond <mickael.remond@process-one.net>
Mon, 11 Feb 2008 15:36:56 +0000 (15:36 +0000)
committerMickaël Rémond <mickael.remond@process-one.net>
Mon, 11 Feb 2008 15:36:56 +0000 (15:36 +0000)
SVN Revision: 1182

ChangeLog
src/ejabberd_receiver.erl

index 57db95d4dec3b4b9e8c2739aa1283d3e8bff7254..bfacfb5486f6c74110d8e28219ded01856d569b0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-02-11  Mickael Remond <mremond@process-one.net>
+
+       * src/ejabberd_receiver.erl: Avoid crash to appear in log, when
+       trying to close a stream with an undefined state.
+
 2008-02-11  Christophe Romain <christophe.romain@process-one.net>
 
        * src/mod_pubsub/mod_pubsub.erl: Bugfix: event used in place of x when
index 6c9cdf01d8dcaca4b6c6a10fd7521616e1581be7..22600eb27ca82bbd48cf603cb14ef8568c87e9d6 100644 (file)
@@ -134,12 +134,7 @@ handle_call({starttls, TLSSocket}, _From,
            #state{xml_stream_state = XMLStreamState,
                   c2s_pid = C2SPid,
                   max_stanza_size = MaxStanzaSize} = State) ->
-    if
-       XMLStreamState /= undefined ->
-           xml_stream:close(XMLStreamState);
-       true ->
-           ok
-    end,
+    close_stream(XMLStreamState),
     NewXMLStreamState = xml_stream:new(C2SPid, MaxStanzaSize),
     NewState = State#state{socket = TLSSocket,
                           sock_mod = tls,
@@ -154,7 +149,7 @@ handle_call({compress, ZlibSocket}, _From,
            #state{xml_stream_state = XMLStreamState,
                   c2s_pid = C2SPid,
                   max_stanza_size = MaxStanzaSize} = State) ->
-    xml_stream:close(XMLStreamState),
+    close_stream(XMLStreamState),
     NewXMLStreamState = xml_stream:new(C2SPid, MaxStanzaSize),
     NewState = State#state{socket = ZlibSocket,
                           sock_mod = ejabberd_zlib,
@@ -169,7 +164,7 @@ handle_call(reset_stream, _From,
            #state{xml_stream_state = XMLStreamState,
                   c2s_pid = C2SPid,
                   max_stanza_size = MaxStanzaSize} = State) ->
-    xml_stream:close(XMLStreamState),
+    close_stream(XMLStreamState),
     NewXMLStreamState = xml_stream:new(C2SPid, MaxStanzaSize),
     Reply = ok,
     {reply, Reply, State#state{xml_stream_state = NewXMLStreamState}};
@@ -252,7 +247,7 @@ handle_info(_Info, State) ->
 %%--------------------------------------------------------------------
 terminate(_Reason, #state{xml_stream_state = XMLStreamState,
                          c2s_pid = C2SPid} = State) ->
-    xml_stream:close(XMLStreamState),
+    close_stream(XMLStreamState),
     if
        C2SPid /= undefined ->
            gen_fsm:send_event(C2SPid, closed);
@@ -306,3 +301,7 @@ process_data(Data,
     State#state{xml_stream_state = XMLStreamState1,
                shaper_state = NewShaperState}.
 
+close_stream(undefined) ->
+    ok;
+close_stream(XMLStreamState) ->
+    xml_stream:close(XMLStreamState).