comparison src/http/v2/ngx_http_v2.c @ 7190:e11a0679d349

HTTP/2: handle duplicate INITIAL_WINDOW_SIZE settings.
author Ruslan Ermilov <ru@nginx.com>
date Mon, 29 Jan 2018 15:54:36 +0300
parents b6dc472299da
children 61d276dcd493
comparison
equal deleted inserted replaced
7189:cbf59d483c9c 7190:e11a0679d349
1998 return ngx_http_v2_connection_error(h2c, 1998 return ngx_http_v2_connection_error(h2c,
1999 NGX_HTTP_V2_FLOW_CTRL_ERROR); 1999 NGX_HTTP_V2_FLOW_CTRL_ERROR);
2000 } 2000 }
2001 2001
2002 window_delta = value - h2c->init_window; 2002 window_delta = value - h2c->init_window;
2003
2004 h2c->init_window = value;
2005 break; 2003 break;
2006 2004
2007 case NGX_HTTP_V2_MAX_FRAME_SIZE_SETTING: 2005 case NGX_HTTP_V2_MAX_FRAME_SIZE_SETTING:
2008 2006
2009 if (value > NGX_HTTP_V2_MAX_FRAME_SIZE 2007 if (value > NGX_HTTP_V2_MAX_FRAME_SIZE
2035 } 2033 }
2036 2034
2037 ngx_http_v2_queue_ordered_frame(h2c, frame); 2035 ngx_http_v2_queue_ordered_frame(h2c, frame);
2038 2036
2039 if (window_delta) { 2037 if (window_delta) {
2038 h2c->init_window += window_delta;
2039
2040 if (ngx_http_v2_adjust_windows(h2c, window_delta) != NGX_OK) { 2040 if (ngx_http_v2_adjust_windows(h2c, window_delta) != NGX_OK) {
2041 return ngx_http_v2_connection_error(h2c, 2041 return ngx_http_v2_connection_error(h2c,
2042 NGX_HTTP_V2_INTERNAL_ERROR); 2042 NGX_HTTP_V2_INTERNAL_ERROR);
2043 } 2043 }
2044 } 2044 }