summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2012-01-28 14:08:52 +0100
committerHarald Welte <laforge@gnumonks.org>2012-01-28 14:08:52 +0100
commitf66bbfa97bd4b5232d168899208ca77bb6088843 (patch)
treed92f48d1bd29aaf62e9a9b4f287bbb3cbd3b8e1d
parentabfa83e85bdd1e7eaa9934d5f49bde8e0c1d35fd (diff)
IPA protocol: Fix delivery of 'ipa_closed' to user processes
-rw-r--r--src/ipa_proto.erl12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/ipa_proto.erl b/src/ipa_proto.erl
index d4e9d96..2d851e3 100644
--- a/src/ipa_proto.erl
+++ b/src/ipa_proto.erl
@@ -146,11 +146,15 @@ process_rx_ipa_msg(S, StreamMap, Data) ->
send_close_signal([]) ->
ok;
send_close_signal([StreamSpec|Tail]) ->
- io:format("FIXME: send_close_signal ~p ~p~n", [StreamSpec, Tail]),
- [{{Socket, StreamID, Pid}}] = StreamSpec,
- Pid ! {ipa_closed, {Socket, StreamID}},
+ io:format("send_close_signal ~p ~p~n", [StreamSpec, Tail]),
+ case StreamSpec of
+ [{{Socket, StreamID}, {process_id, Pid}}] ->
+ Pid ! {ipa_closed, {Socket, StreamID}};
+ [{{Socket, StreamID}, {callback_fn, Fn, Args}}] ->
+ Fn(Socket, StreamID, ipa_closed, Args)
+ end,
send_close_signal(Tail).
-
+
process_tcp_closed(S, StreamMap) ->
% signal the closed socket to the user
StreamList = ets:match(StreamMap, '$1'),