diff options
author | Loïc Hoguin <[email protected]> | 2014-03-10 09:51:20 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2014-03-10 09:51:20 +0100 |
commit | 4d75a78f822928ec8f57b934491d3870d8861308 (patch) | |
tree | 375d83c924657a709ccec3915d584d5ce9fa8ed4 /src/gun.erl | |
parent | d2a2d83f5d3521cf9dca701beb5f65a6db29e287 (diff) | |
download | gun-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.erl | 4 |
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); |