IPA protocol: Fix delivery of 'ipa_closed' to user processes
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 @@
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'),