aboutsummaryrefslogtreecommitdiffstats
path: root/src/gun.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-03-10 09:51:20 +0100
committerLoïc Hoguin <[email protected]>2014-03-10 09:51:20 +0100
commit4d75a78f822928ec8f57b934491d3870d8861308 (patch)
tree375d83c924657a709ccec3915d584d5ce9fa8ed4 /src/gun.erl
parentd2a2d83f5d3521cf9dca701beb5f65a6db29e287 (diff)
downloadgun-4d75a78f822928ec8f57b934491d3870d8861308.tar.gz
gun-4d75a78f822928ec8f57b934491d3870d8861308.tar.bz2
gun-4d75a78f822928ec8f57b934491d3870d8861308.zip
Improve behavior when losing the connection
Diffstat (limited to 'src/gun.erl')
-rw-r--r--src/gun.erl4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gun.erl b/src/gun.erl
index cff3522..57d29e2 100644
--- a/src/gun.erl
+++ b/src/gun.erl
@@ -314,7 +314,7 @@ loop(State=#state{parent=Parent, owner=Owner, host=Host,
receive
{OK, Socket, Data} ->
case Protocol:handle(Data, ProtoState) of
- error ->
+ close ->
Transport:close(Socket),
retry_loop(State#state{socket=undefined,
transport=undefined, protocol=undefined}, Retry);
@@ -322,10 +322,12 @@ loop(State=#state{parent=Parent, owner=Owner, host=Host,
loop(State#state{protocol_state=ProtoState2})
end;
{Closed, Socket} ->
+ Protocol:close(ProtoState),
Transport:close(Socket),
retry_loop(State#state{socket=undefined, transport=undefined,
protocol=undefined}, Retry);
{Error, Socket, _} ->
+ Protocol:close(ProtoState),
Transport:close(Socket),
retry_loop(State#state{socket=undefined, transport=undefined,
protocol=undefined}, Retry);