From 56c362b1a7fadc854ed39c525f704de3124d9502 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 11 May 2015 12:05:14 +0200 Subject: [PATCH] http2: don't signal settings change for same values --- lib/http2.c | 14 ++++++++++---- 1 file 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));