aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2015-05-11 12:05:14 +0200
committerDaniel Stenberg <daniel@haxx.se>2015-05-18 09:33:47 +0200
commit56c362b1a7fadc854ed39c525f704de3124d9502 (patch)
tree16b8bad9d9fa054d0f39e4c5e03357729c2e1471 /lib
parent72105ebf0565761c38805ba699b25d8c5520ffb0 (diff)
http2: don't signal settings change for same values
Diffstat (limited to 'lib')
-rw-r--r--lib/http2.c14
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));