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_spdy.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_spdy.erl')
-rw-r--r-- | src/gun_spdy.erl | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gun_spdy.erl b/src/gun_spdy.erl index eefcdd2..d8070d1 100644 --- a/src/gun_spdy.erl +++ b/src/gun_spdy.erl @@ -16,6 +16,7 @@ -export([init/3]). -export([handle/2]). +-export([close/1]). -export([keepalive/1]). -export([request/6]). -export([request/7]). @@ -165,7 +166,17 @@ handle_frame(_, #spdy_state{owner=Owner, socket=Socket, transport=Transport}, "The remote endpoint sent invalid data."}}, %% @todo LastGoodStreamID Transport:send(Socket, cow_spdy:goaway(0, protocol_error)), - error. + close. + +close(#spdy_state{owner=Owner, streams=Streams}) -> + close_streams(Owner, Streams). + +close_streams(_, []) -> + ok; +close_streams(Owner, [#stream{ref=StreamRef}|Tail]) -> + Owner ! {gun_error, self(), StreamRef, {closed, + "The connection was lost."}}, + close_streams(Owner, Tail). keepalive(State=#spdy_state{socket=Socket, transport=Transport, ping_id=PingID}) -> |