aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMickaël Rémond <mickael.remond@process-one.net>2008-02-11 15:36:56 +0000
committerMickaël Rémond <mickael.remond@process-one.net>2008-02-11 15:36:56 +0000
commit4b5632a2602f9795a246a346d22c3cbf33bd3411 (patch)
treea5964850db0b4aa6f62b6fef25bb3ffd29961881 /src
parentuse if event instead of x when xmlns is pubsub#event (EJAB-518) (diff)
* src/ejabberd_receiver.erl: Avoid crash to appear in log, when trying to close a stream with an undefined state.
SVN Revision: 1182
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_receiver.erl17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/ejabberd_receiver.erl b/src/ejabberd_receiver.erl
index 6c9cdf01d..22600eb27 100644
--- a/src/ejabberd_receiver.erl
+++ b/src/ejabberd_receiver.erl
@@ -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).