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)); | 
