diff options
author | Daniel Stenberg <daniel@haxx.se> | 2015-05-11 12:05:14 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2015-05-18 09:33:47 +0200 |
commit | 56c362b1a7fadc854ed39c525f704de3124d9502 (patch) | |
tree | 16b8bad9d9fa054d0f39e4c5e03357729c2e1471 /lib | |
parent | 72105ebf0565761c38805ba699b25d8c5520ffb0 (diff) |
http2: don't signal settings change for same values
Diffstat (limited to 'lib')
-rw-r--r-- | lib/http2.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/http2.c b/lib/http2.c index c6efc21c8..4eb842a61 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -298,6 +298,8 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame, } break; case NGHTTP2_SETTINGS: + { + uint32_t max_conn = httpc->settings.max_concurrent_streams; DEBUGF(infof(conn->data, "Got SETTINGS for stream %x!\n", stream_id)); httpc->settings.max_concurrent_streams = nghttp2_session_get_remote_settings( @@ -309,10 +311,14 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame, httpc->settings.max_concurrent_streams)); DEBUGF(infof(conn->data, "ENABLE_PUSH == %s\n", httpc->settings.enable_push?"TRUE":"false")); - infof(conn->data, - "Connection state changed (MAX_CONCURRENT_STREAMS updated)!\n"); - Curl_multi_connchanged(conn->data->multi); - break; + if(max_conn != httpc->settings.max_concurrent_streams) { + /* only signal change if the value actually changed */ + infof(conn->data, + "Connection state changed (MAX_CONCURRENT_STREAMS updated)!\n"); + Curl_multi_connchanged(conn->data->multi); + } + } + break; default: DEBUGF(infof(conn->data, "Got frame type %x for stream %x!\n", frame->hd.type, stream_id)); |