Merge branch 'master' into hpack-exp
This commit is contained in:
commit
8f8c841df0
|
@ -318,7 +318,8 @@ static int on_stream_close_callback(nghttp2_session *session,
|
||||||
req = nghttp2_session_get_stream_user_data(session, stream_id);
|
req = nghttp2_session_get_stream_user_data(session, stream_id);
|
||||||
if(req) {
|
if(req) {
|
||||||
int rv;
|
int rv;
|
||||||
rv = nghttp2_submit_goaway(session, NGHTTP2_NO_ERROR, NULL, 0);
|
rv = nghttp2_submit_goaway(session, NGHTTP2_FLAG_NONE, NGHTTP2_NO_ERROR,
|
||||||
|
NULL, 0);
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
diec("nghttp2_submit_goaway", rv);
|
diec("nghttp2_submit_goaway", rv);
|
||||||
}
|
}
|
||||||
|
@ -350,7 +351,8 @@ static int on_data_chunk_recv_callback(nghttp2_session *session, uint8_t flags,
|
||||||
int rv;
|
int rv;
|
||||||
rv = nghttp2_gzip_inflate(req->inflater, out, &outlen, data, &tlen);
|
rv = nghttp2_gzip_inflate(req->inflater, out, &outlen, data, &tlen);
|
||||||
if(rv == -1) {
|
if(rv == -1) {
|
||||||
nghttp2_submit_rst_stream(session, stream_id, NGHTTP2_INTERNAL_ERROR);
|
nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE, stream_id,
|
||||||
|
NGHTTP2_INTERNAL_ERROR);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fwrite(out, 1, outlen, stdout);
|
fwrite(out, 1, outlen, stdout);
|
||||||
|
|
|
@ -1831,6 +1831,9 @@ int nghttp2_submit_data(nghttp2_session *session, uint8_t flags,
|
||||||
* Submits PRIORITY frame to change the priority of stream |stream_id|
|
* Submits PRIORITY frame to change the priority of stream |stream_id|
|
||||||
* to the priority value |pri|.
|
* to the priority value |pri|.
|
||||||
*
|
*
|
||||||
|
* The |flags| is currently ignored and should be
|
||||||
|
* :enum:`NGHTTP2_FLAG_NONE`.
|
||||||
|
*
|
||||||
* This function returns 0 if it succeeds, or one of the following
|
* This function returns 0 if it succeeds, or one of the following
|
||||||
* negative error codes:
|
* negative error codes:
|
||||||
*
|
*
|
||||||
|
@ -1841,8 +1844,8 @@ int nghttp2_submit_data(nghttp2_session *session, uint8_t flags,
|
||||||
* :enum:`NGHTTP2_ERR_STREAM_CLOSED`
|
* :enum:`NGHTTP2_ERR_STREAM_CLOSED`
|
||||||
* The stream is already closed or does not exist.
|
* The stream is already closed or does not exist.
|
||||||
*/
|
*/
|
||||||
int nghttp2_submit_priority(nghttp2_session *session, int32_t stream_id,
|
int nghttp2_submit_priority(nghttp2_session *session, uint8_t flags,
|
||||||
int32_t pri);
|
int32_t stream_id, int32_t pri);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function
|
* @function
|
||||||
|
@ -1850,13 +1853,17 @@ int nghttp2_submit_priority(nghttp2_session *session, int32_t stream_id,
|
||||||
* Submits RST_STREAM frame to cancel/reject the stream |stream_id|
|
* Submits RST_STREAM frame to cancel/reject the stream |stream_id|
|
||||||
* with the error code |error_code|.
|
* with the error code |error_code|.
|
||||||
*
|
*
|
||||||
|
* The |flags| is currently ignored and should be
|
||||||
|
* :enum:`NGHTTP2_FLAG_NONE`.
|
||||||
|
*
|
||||||
* This function returns 0 if it succeeds, or one of the following
|
* This function returns 0 if it succeeds, or one of the following
|
||||||
* negative error codes:
|
* negative error codes:
|
||||||
*
|
*
|
||||||
* :enum:`NGHTTP2_ERR_NOMEM`
|
* :enum:`NGHTTP2_ERR_NOMEM`
|
||||||
* Out of memory.
|
* Out of memory.
|
||||||
*/
|
*/
|
||||||
int nghttp2_submit_rst_stream(nghttp2_session *session, int32_t stream_id,
|
int nghttp2_submit_rst_stream(nghttp2_session *session, uint8_t flags,
|
||||||
|
int32_t stream_id,
|
||||||
nghttp2_error_code error_code);
|
nghttp2_error_code error_code);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1866,6 +1873,9 @@ int nghttp2_submit_rst_stream(nghttp2_session *session, int32_t stream_id,
|
||||||
* pointer to the array of :type:`nghttp2_settings_entry`. The |niv|
|
* pointer to the array of :type:`nghttp2_settings_entry`. The |niv|
|
||||||
* indicates the number of :type:`nghttp2_settings_entry`.
|
* indicates the number of :type:`nghttp2_settings_entry`.
|
||||||
*
|
*
|
||||||
|
* The |flags| is currently ignored and should be
|
||||||
|
* :enum:`NGHTTP2_FLAG_NONE`.
|
||||||
|
*
|
||||||
* This function does not take ownership of the |iv|. This function
|
* This function does not take ownership of the |iv|. This function
|
||||||
* copies all the elements in the |iv|.
|
* copies all the elements in the |iv|.
|
||||||
*
|
*
|
||||||
|
@ -1882,7 +1892,7 @@ int nghttp2_submit_rst_stream(nghttp2_session *session, int32_t stream_id,
|
||||||
* :enum:`NGHTTP2_ERR_NOMEM`
|
* :enum:`NGHTTP2_ERR_NOMEM`
|
||||||
* Out of memory.
|
* Out of memory.
|
||||||
*/
|
*/
|
||||||
int nghttp2_submit_settings(nghttp2_session *session,
|
int nghttp2_submit_settings(nghttp2_session *session, uint8_t flags,
|
||||||
const nghttp2_settings_entry *iv, size_t niv);
|
const nghttp2_settings_entry *iv, size_t niv);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1934,6 +1944,9 @@ int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags,
|
||||||
* received PING frame. The library automatically submits PING frame
|
* received PING frame. The library automatically submits PING frame
|
||||||
* in this case.
|
* in this case.
|
||||||
*
|
*
|
||||||
|
* The |flags| is currently ignored and should be
|
||||||
|
* :enum:`NGHTTP2_FLAG_NONE`.
|
||||||
|
*
|
||||||
* If the |opaque_data| is non ``NULL``, then it should point to the 8
|
* If the |opaque_data| is non ``NULL``, then it should point to the 8
|
||||||
* bytes array of memory to specify opaque data to send with PING
|
* bytes array of memory to specify opaque data to send with PING
|
||||||
* frame. If the |opaque_data| is ``NULL``, zero-cleared 8 bytes will
|
* frame. If the |opaque_data| is ``NULL``, zero-cleared 8 bytes will
|
||||||
|
@ -1945,13 +1958,17 @@ int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags,
|
||||||
* :enum:`NGHTTP2_ERR_NOMEM`
|
* :enum:`NGHTTP2_ERR_NOMEM`
|
||||||
* Out of memory.
|
* Out of memory.
|
||||||
*/
|
*/
|
||||||
int nghttp2_submit_ping(nghttp2_session *session, uint8_t *opaque_data);
|
int nghttp2_submit_ping(nghttp2_session *session, uint8_t flags,
|
||||||
|
uint8_t *opaque_data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function
|
* @function
|
||||||
*
|
*
|
||||||
* Submits GOAWAY frame with the error code |error_code|.
|
* Submits GOAWAY frame with the error code |error_code|.
|
||||||
*
|
*
|
||||||
|
* The |flags| is currently ignored and should be
|
||||||
|
* :enum:`NGHTTP2_FLAG_NONE`.
|
||||||
|
*
|
||||||
* If the |opaque_data| is not ``NULL`` and |opaque_data_len| is not
|
* If the |opaque_data| is not ``NULL`` and |opaque_data_len| is not
|
||||||
* zero, those data will be sent as additional debug data. The
|
* zero, those data will be sent as additional debug data. The
|
||||||
* library makes a copy of the memory region pointed by |opaque_data|
|
* library makes a copy of the memory region pointed by |opaque_data|
|
||||||
|
@ -1965,7 +1982,7 @@ int nghttp2_submit_ping(nghttp2_session *session, uint8_t *opaque_data);
|
||||||
* :enum:`NGHTTP2_ERR_NOMEM`
|
* :enum:`NGHTTP2_ERR_NOMEM`
|
||||||
* Out of memory.
|
* Out of memory.
|
||||||
*/
|
*/
|
||||||
int nghttp2_submit_goaway(nghttp2_session *session,
|
int nghttp2_submit_goaway(nghttp2_session *session, uint8_t flags,
|
||||||
nghttp2_error_code error_code,
|
nghttp2_error_code error_code,
|
||||||
uint8_t *opaque_data, size_t opaque_data_len);
|
uint8_t *opaque_data, size_t opaque_data_len);
|
||||||
|
|
||||||
|
@ -1974,7 +1991,8 @@ int nghttp2_submit_goaway(nghttp2_session *session,
|
||||||
*
|
*
|
||||||
* Submits WINDOW_UPDATE frame.
|
* Submits WINDOW_UPDATE frame.
|
||||||
*
|
*
|
||||||
* The |flags| is currently ignored.
|
* The |flags| is currently ignored and should be
|
||||||
|
* :enum:`NGHTTP2_FLAG_NONE`.
|
||||||
*
|
*
|
||||||
* If the |window_size_increment| is positive, the WINDOW_UPDATE with
|
* If the |window_size_increment| is positive, the WINDOW_UPDATE with
|
||||||
* that value as window_size_increment is queued. If the
|
* that value as window_size_increment is queued. If the
|
||||||
|
|
|
@ -90,7 +90,8 @@ int nghttp2_session_fail_session(nghttp2_session *session,
|
||||||
if(session->goaway_flags & NGHTTP2_GOAWAY_SEND) {
|
if(session->goaway_flags & NGHTTP2_GOAWAY_SEND) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return nghttp2_submit_goaway(session, error_code, NULL, 0);
|
return nghttp2_submit_goaway(session, NGHTTP2_FLAG_NONE, error_code,
|
||||||
|
NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nghttp2_session_is_my_stream_id(nghttp2_session *session,
|
int nghttp2_session_is_my_stream_id(nghttp2_session *session,
|
||||||
|
@ -3482,7 +3483,7 @@ int nghttp2_session_upgrade(nghttp2_session *session,
|
||||||
frame.settings.niv = niv;
|
frame.settings.niv = niv;
|
||||||
rv = nghttp2_session_on_settings_received(session, &frame);
|
rv = nghttp2_session_on_settings_received(session, &frame);
|
||||||
} else {
|
} else {
|
||||||
rv = nghttp2_submit_settings(session, iv, niv);
|
rv = nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv, niv);
|
||||||
}
|
}
|
||||||
free(iv);
|
free(iv);
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
|
|
|
@ -154,13 +154,14 @@ int nghttp2_submit_headers(nghttp2_session *session, uint8_t flags,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int nghttp2_submit_ping(nghttp2_session *session, uint8_t *opaque_data)
|
int nghttp2_submit_ping(nghttp2_session *session, uint8_t flags,
|
||||||
|
uint8_t *opaque_data)
|
||||||
{
|
{
|
||||||
return nghttp2_session_add_ping(session, NGHTTP2_FLAG_NONE, opaque_data);
|
return nghttp2_session_add_ping(session, NGHTTP2_FLAG_NONE, opaque_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nghttp2_submit_priority(nghttp2_session *session, int32_t stream_id,
|
int nghttp2_submit_priority(nghttp2_session *session, uint8_t flags,
|
||||||
int32_t pri)
|
int32_t stream_id, int32_t pri)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
nghttp2_frame *frame;
|
nghttp2_frame *frame;
|
||||||
|
@ -190,13 +191,14 @@ int nghttp2_submit_priority(nghttp2_session *session, int32_t stream_id,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nghttp2_submit_rst_stream(nghttp2_session *session, int32_t stream_id,
|
int nghttp2_submit_rst_stream(nghttp2_session *session, uint8_t flags,
|
||||||
|
int32_t stream_id,
|
||||||
nghttp2_error_code error_code)
|
nghttp2_error_code error_code)
|
||||||
{
|
{
|
||||||
return nghttp2_session_add_rst_stream(session, stream_id, error_code);
|
return nghttp2_session_add_rst_stream(session, stream_id, error_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nghttp2_submit_goaway(nghttp2_session *session,
|
int nghttp2_submit_goaway(nghttp2_session *session, uint8_t flags,
|
||||||
nghttp2_error_code error_code,
|
nghttp2_error_code error_code,
|
||||||
uint8_t *opaque_data, size_t opaque_data_len)
|
uint8_t *opaque_data, size_t opaque_data_len)
|
||||||
{
|
{
|
||||||
|
@ -204,7 +206,7 @@ int nghttp2_submit_goaway(nghttp2_session *session,
|
||||||
error_code, opaque_data, opaque_data_len);
|
error_code, opaque_data, opaque_data_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nghttp2_submit_settings(nghttp2_session *session,
|
int nghttp2_submit_settings(nghttp2_session *session, uint8_t flags,
|
||||||
const nghttp2_settings_entry *iv, size_t niv)
|
const nghttp2_settings_entry *iv, size_t niv)
|
||||||
{
|
{
|
||||||
nghttp2_frame *frame;
|
nghttp2_frame *frame;
|
||||||
|
|
|
@ -358,7 +358,7 @@ int Http2Handler::on_connect()
|
||||||
entry[niv].value = 1;
|
entry[niv].value = 1;
|
||||||
++niv;
|
++niv;
|
||||||
}
|
}
|
||||||
r = nghttp2_submit_settings(session_, entry, niv);
|
r = nghttp2_submit_settings(session_, NGHTTP2_FLAG_NONE, entry, niv);
|
||||||
if(r != 0) {
|
if(r != 0) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -701,14 +701,15 @@ int hd_on_frame_recv_callback
|
||||||
int32_t stream_id = frame->hd.stream_id;
|
int32_t stream_id = frame->hd.stream_id;
|
||||||
if(!http2::check_http2_headers(frame->headers.nva,
|
if(!http2::check_http2_headers(frame->headers.nva,
|
||||||
frame->headers.nvlen)) {
|
frame->headers.nvlen)) {
|
||||||
nghttp2_submit_rst_stream(session, stream_id, NGHTTP2_PROTOCOL_ERROR);
|
nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE, stream_id,
|
||||||
|
NGHTTP2_PROTOCOL_ERROR);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
for(size_t i = 0; REQUIRED_HEADERS[i]; ++i) {
|
for(size_t i = 0; REQUIRED_HEADERS[i]; ++i) {
|
||||||
if(!http2::get_unique_header(frame->headers.nva,
|
if(!http2::get_unique_header(frame->headers.nva,
|
||||||
frame->headers.nvlen,
|
frame->headers.nvlen,
|
||||||
REQUIRED_HEADERS[i])) {
|
REQUIRED_HEADERS[i])) {
|
||||||
nghttp2_submit_rst_stream(session, stream_id,
|
nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE, stream_id,
|
||||||
NGHTTP2_PROTOCOL_ERROR);
|
NGHTTP2_PROTOCOL_ERROR);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -685,7 +685,7 @@ struct HttpClient {
|
||||||
if(!need_upgrade()) {
|
if(!need_upgrade()) {
|
||||||
nghttp2_settings_entry iv[16];
|
nghttp2_settings_entry iv[16];
|
||||||
auto niv = populate_settings(iv);
|
auto niv = populate_settings(iv);
|
||||||
rv = nghttp2_submit_settings(session, iv, niv);
|
rv = nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv, niv);
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1012,7 +1012,8 @@ int on_data_chunk_recv_callback
|
||||||
size_t tlen = len;
|
size_t tlen = len;
|
||||||
int rv = nghttp2_gzip_inflate(req->inflater, out, &outlen, data, &tlen);
|
int rv = nghttp2_gzip_inflate(req->inflater, out, &outlen, data, &tlen);
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
nghttp2_submit_rst_stream(session, stream_id, NGHTTP2_INTERNAL_ERROR);
|
nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE, stream_id,
|
||||||
|
NGHTTP2_INTERNAL_ERROR);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(!config.null_out) {
|
if(!config.null_out) {
|
||||||
|
@ -1140,7 +1141,8 @@ int on_stream_close_callback
|
||||||
(*itr).second->record_complete_time();
|
(*itr).second->record_complete_time();
|
||||||
++client->complete;
|
++client->complete;
|
||||||
if(client->all_requests_processed()) {
|
if(client->all_requests_processed()) {
|
||||||
nghttp2_submit_goaway(session, NGHTTP2_NO_ERROR, nullptr, 0);
|
nghttp2_submit_goaway(session, NGHTTP2_FLAG_NONE, NGHTTP2_NO_ERROR,
|
||||||
|
nullptr, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -443,8 +443,9 @@ Http2Upstream::Http2Upstream(ClientHandler *handler)
|
||||||
entry[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
|
entry[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
|
||||||
entry[1].value = initial_window_size_;
|
entry[1].value = initial_window_size_;
|
||||||
|
|
||||||
rv = nghttp2_submit_settings
|
rv = nghttp2_submit_settings(session_, NGHTTP2_FLAG_NONE,
|
||||||
(session_, entry, sizeof(entry)/sizeof(nghttp2_settings_entry));
|
entry,
|
||||||
|
sizeof(entry)/sizeof(nghttp2_settings_entry));
|
||||||
assert(rv == 0);
|
assert(rv == 0);
|
||||||
// Set large connection-level window size to effectively disable
|
// Set large connection-level window size to effectively disable
|
||||||
// connection-level flow control.
|
// connection-level flow control.
|
||||||
|
@ -715,8 +716,8 @@ int Http2Upstream::rst_stream(Downstream *downstream,
|
||||||
<< error_code;
|
<< error_code;
|
||||||
}
|
}
|
||||||
int rv;
|
int rv;
|
||||||
rv = nghttp2_submit_rst_stream(session_, downstream->get_stream_id(),
|
rv = nghttp2_submit_rst_stream(session_, NGHTTP2_FLAG_NONE,
|
||||||
error_code);
|
downstream->get_stream_id(), error_code);
|
||||||
if(rv < NGHTTP2_ERR_FATAL) {
|
if(rv < NGHTTP2_ERR_FATAL) {
|
||||||
ULOG(FATAL, this) << "nghttp2_submit_rst_stream() failed: "
|
ULOG(FATAL, this) << "nghttp2_submit_rst_stream() failed: "
|
||||||
<< nghttp2_strerror(rv);
|
<< nghttp2_strerror(rv);
|
||||||
|
|
|
@ -145,8 +145,7 @@ int SpdyDownstreamConnection::submit_rst_stream(Downstream *downstream)
|
||||||
<< downstream << ", stream_id="
|
<< downstream << ", stream_id="
|
||||||
<< downstream->get_downstream_stream_id();
|
<< downstream->get_downstream_stream_id();
|
||||||
}
|
}
|
||||||
rv = spdy_->submit_rst_stream(this,
|
rv = spdy_->submit_rst_stream(downstream->get_downstream_stream_id(),
|
||||||
downstream->get_downstream_stream_id(),
|
|
||||||
NGHTTP2_INTERNAL_ERROR);
|
NGHTTP2_INTERNAL_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -577,8 +577,7 @@ int SpdySession::submit_request(SpdyDownstreamConnection *dconn,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SpdySession::submit_rst_stream(SpdyDownstreamConnection *dconn,
|
int SpdySession::submit_rst_stream(int32_t stream_id,
|
||||||
int32_t stream_id,
|
|
||||||
nghttp2_error_code error_code)
|
nghttp2_error_code error_code)
|
||||||
{
|
{
|
||||||
assert(state_ == CONNECTED);
|
assert(state_ == CONNECTED);
|
||||||
|
@ -588,7 +587,8 @@ int SpdySession::submit_rst_stream(SpdyDownstreamConnection *dconn,
|
||||||
<< " with error_code="
|
<< " with error_code="
|
||||||
<< error_code;
|
<< error_code;
|
||||||
}
|
}
|
||||||
int rv = nghttp2_submit_rst_stream(session_, stream_id, error_code);
|
int rv = nghttp2_submit_rst_stream(session_, NGHTTP2_FLAG_NONE,
|
||||||
|
stream_id, error_code);
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
SSLOG(FATAL, this) << "nghttp2_submit_rst_stream() failed: "
|
SSLOG(FATAL, this) << "nghttp2_submit_rst_stream() failed: "
|
||||||
<< nghttp2_strerror(rv);
|
<< nghttp2_strerror(rv);
|
||||||
|
@ -750,15 +750,13 @@ int on_frame_recv_callback
|
||||||
auto sd = reinterpret_cast<StreamData*>
|
auto sd = reinterpret_cast<StreamData*>
|
||||||
(nghttp2_session_get_stream_user_data(session, frame->hd.stream_id));
|
(nghttp2_session_get_stream_user_data(session, frame->hd.stream_id));
|
||||||
if(!sd || !sd->dconn) {
|
if(!sd || !sd->dconn) {
|
||||||
nghttp2_submit_rst_stream(session, frame->hd.stream_id,
|
spdy->submit_rst_stream(frame->hd.stream_id, NGHTTP2_INTERNAL_ERROR);
|
||||||
NGHTTP2_INTERNAL_ERROR);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
auto downstream = sd->dconn->get_downstream();
|
auto downstream = sd->dconn->get_downstream();
|
||||||
if(!downstream ||
|
if(!downstream ||
|
||||||
downstream->get_downstream_stream_id() != frame->hd.stream_id) {
|
downstream->get_downstream_stream_id() != frame->hd.stream_id) {
|
||||||
nghttp2_submit_rst_stream(session, frame->hd.stream_id,
|
spdy->submit_rst_stream(frame->hd.stream_id, NGHTTP2_INTERNAL_ERROR);
|
||||||
NGHTTP2_INTERNAL_ERROR);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
auto nva = frame->headers.nva;
|
auto nva = frame->headers.nva;
|
||||||
|
@ -766,8 +764,7 @@ int on_frame_recv_callback
|
||||||
|
|
||||||
// Assuming that nva is sorted by name.
|
// Assuming that nva is sorted by name.
|
||||||
if(!http2::check_http2_headers(nva, nvlen)) {
|
if(!http2::check_http2_headers(nva, nvlen)) {
|
||||||
nghttp2_submit_rst_stream(session, frame->hd.stream_id,
|
spdy->submit_rst_stream(frame->hd.stream_id, NGHTTP2_PROTOCOL_ERROR);
|
||||||
NGHTTP2_PROTOCOL_ERROR);
|
|
||||||
downstream->set_response_state(Downstream::MSG_RESET);
|
downstream->set_response_state(Downstream::MSG_RESET);
|
||||||
call_downstream_readcb(spdy, downstream);
|
call_downstream_readcb(spdy, downstream);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -782,8 +779,7 @@ int on_frame_recv_callback
|
||||||
|
|
||||||
auto status = http2::get_unique_header(nva, nvlen, ":status");
|
auto status = http2::get_unique_header(nva, nvlen, ":status");
|
||||||
if(!status || http2::value_lws(status)) {
|
if(!status || http2::value_lws(status)) {
|
||||||
nghttp2_submit_rst_stream(session, frame->hd.stream_id,
|
spdy->submit_rst_stream(frame->hd.stream_id, NGHTTP2_PROTOCOL_ERROR);
|
||||||
NGHTTP2_PROTOCOL_ERROR);
|
|
||||||
downstream->set_response_state(Downstream::MSG_RESET);
|
downstream->set_response_state(Downstream::MSG_RESET);
|
||||||
call_downstream_readcb(spdy, downstream);
|
call_downstream_readcb(spdy, downstream);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -855,8 +851,7 @@ int on_frame_recv_callback
|
||||||
}
|
}
|
||||||
rv = upstream->on_downstream_header_complete(downstream);
|
rv = upstream->on_downstream_header_complete(downstream);
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
nghttp2_submit_rst_stream(session, frame->hd.stream_id,
|
spdy->submit_rst_stream(frame->hd.stream_id, NGHTTP2_PROTOCOL_ERROR);
|
||||||
NGHTTP2_PROTOCOL_ERROR);
|
|
||||||
downstream->set_response_state(Downstream::MSG_RESET);
|
downstream->set_response_state(Downstream::MSG_RESET);
|
||||||
}
|
}
|
||||||
call_downstream_readcb(spdy, downstream);
|
call_downstream_readcb(spdy, downstream);
|
||||||
|
@ -899,8 +894,7 @@ int on_frame_recv_callback
|
||||||
<< frame->hd.stream_id;
|
<< frame->hd.stream_id;
|
||||||
}
|
}
|
||||||
// We just respond with RST_STREAM.
|
// We just respond with RST_STREAM.
|
||||||
nghttp2_submit_rst_stream(session, frame->hd.stream_id,
|
spdy->submit_rst_stream(frame->hd.stream_id, NGHTTP2_REFUSED_STREAM);
|
||||||
NGHTTP2_REFUSED_STREAM);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -920,12 +914,12 @@ int on_data_chunk_recv_callback(nghttp2_session *session,
|
||||||
auto sd = reinterpret_cast<StreamData*>
|
auto sd = reinterpret_cast<StreamData*>
|
||||||
(nghttp2_session_get_stream_user_data(session, stream_id));
|
(nghttp2_session_get_stream_user_data(session, stream_id));
|
||||||
if(!sd || !sd->dconn) {
|
if(!sd || !sd->dconn) {
|
||||||
nghttp2_submit_rst_stream(session, stream_id, NGHTTP2_INTERNAL_ERROR);
|
spdy->submit_rst_stream(stream_id, NGHTTP2_INTERNAL_ERROR);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
auto downstream = sd->dconn->get_downstream();
|
auto downstream = sd->dconn->get_downstream();
|
||||||
if(!downstream || downstream->get_downstream_stream_id() != stream_id) {
|
if(!downstream || downstream->get_downstream_stream_id() != stream_id) {
|
||||||
nghttp2_submit_rst_stream(session, stream_id, NGHTTP2_INTERNAL_ERROR);
|
spdy->submit_rst_stream(stream_id, NGHTTP2_INTERNAL_ERROR);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -940,8 +934,7 @@ int on_data_chunk_recv_callback(nghttp2_session *session,
|
||||||
<< ", initial_window_size="
|
<< ", initial_window_size="
|
||||||
<< spdy->get_initial_window_size();
|
<< spdy->get_initial_window_size();
|
||||||
}
|
}
|
||||||
nghttp2_submit_rst_stream(session, stream_id,
|
spdy->submit_rst_stream(stream_id, NGHTTP2_FLOW_CONTROL_ERROR);
|
||||||
NGHTTP2_FLOW_CONTROL_ERROR);
|
|
||||||
downstream->set_response_state(Downstream::MSG_RESET);
|
downstream->set_response_state(Downstream::MSG_RESET);
|
||||||
call_downstream_readcb(spdy, downstream);
|
call_downstream_readcb(spdy, downstream);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -951,7 +944,7 @@ int on_data_chunk_recv_callback(nghttp2_session *session,
|
||||||
auto upstream = downstream->get_upstream();
|
auto upstream = downstream->get_upstream();
|
||||||
rv = upstream->on_downstream_body(downstream, data, len);
|
rv = upstream->on_downstream_body(downstream, data, len);
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
nghttp2_submit_rst_stream(session, stream_id, NGHTTP2_INTERNAL_ERROR);
|
spdy->submit_rst_stream(stream_id, NGHTTP2_INTERNAL_ERROR);
|
||||||
downstream->set_response_state(Downstream::MSG_RESET);
|
downstream->set_response_state(Downstream::MSG_RESET);
|
||||||
}
|
}
|
||||||
call_downstream_readcb(spdy, downstream);
|
call_downstream_readcb(spdy, downstream);
|
||||||
|
@ -964,20 +957,20 @@ int before_frame_send_callback(nghttp2_session *session,
|
||||||
const nghttp2_frame *frame,
|
const nghttp2_frame *frame,
|
||||||
void *user_data)
|
void *user_data)
|
||||||
{
|
{
|
||||||
|
auto spdy = reinterpret_cast<SpdySession*>(user_data);
|
||||||
if(frame->hd.type == NGHTTP2_HEADERS &&
|
if(frame->hd.type == NGHTTP2_HEADERS &&
|
||||||
frame->headers.cat == NGHTTP2_HCAT_REQUEST) {
|
frame->headers.cat == NGHTTP2_HCAT_REQUEST) {
|
||||||
auto sd = reinterpret_cast<StreamData*>
|
auto sd = reinterpret_cast<StreamData*>
|
||||||
(nghttp2_session_get_stream_user_data(session, frame->hd.stream_id));
|
(nghttp2_session_get_stream_user_data(session, frame->hd.stream_id));
|
||||||
if(!sd || !sd->dconn) {
|
if(!sd || !sd->dconn) {
|
||||||
nghttp2_submit_rst_stream(session, frame->hd.stream_id,
|
spdy->submit_rst_stream(frame->hd.stream_id, NGHTTP2_CANCEL);
|
||||||
NGHTTP2_CANCEL);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
auto downstream = sd->dconn->get_downstream();
|
auto downstream = sd->dconn->get_downstream();
|
||||||
if(downstream) {
|
if(downstream) {
|
||||||
downstream->set_downstream_stream_id(frame->hd.stream_id);
|
downstream->set_downstream_stream_id(frame->hd.stream_id);
|
||||||
} else {
|
} else {
|
||||||
nghttp2_submit_rst_stream(session, frame->hd.stream_id, NGHTTP2_CANCEL);
|
spdy->submit_rst_stream(frame->hd.stream_id, NGHTTP2_CANCEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1098,8 +1091,8 @@ int SpdySession::on_connect()
|
||||||
entry[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
|
entry[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
|
||||||
entry[1].value = get_initial_window_size();
|
entry[1].value = get_initial_window_size();
|
||||||
|
|
||||||
rv = nghttp2_submit_settings
|
rv = nghttp2_submit_settings(session_, NGHTTP2_FLAG_NONE, entry,
|
||||||
(session_, entry, sizeof(entry)/sizeof(nghttp2_settings_entry));
|
sizeof(entry)/sizeof(nghttp2_settings_entry));
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,8 +68,7 @@ public:
|
||||||
uint8_t pri, const char **nv,
|
uint8_t pri, const char **nv,
|
||||||
const nghttp2_data_provider *data_prd);
|
const nghttp2_data_provider *data_prd);
|
||||||
|
|
||||||
int submit_rst_stream(SpdyDownstreamConnection *dconn,
|
int submit_rst_stream(int32_t stream_id, nghttp2_error_code error_code);
|
||||||
int32_t stream_id, nghttp2_error_code error_code);
|
|
||||||
|
|
||||||
int submit_window_update(SpdyDownstreamConnection *dconn, int32_t amount);
|
int submit_window_update(SpdyDownstreamConnection *dconn, int32_t amount);
|
||||||
|
|
||||||
|
|
|
@ -2243,9 +2243,10 @@ void test_nghttp2_submit_priority(void)
|
||||||
NGHTTP2_STREAM_OPENING, NULL);
|
NGHTTP2_STREAM_OPENING, NULL);
|
||||||
|
|
||||||
CU_ASSERT(NGHTTP2_ERR_INVALID_ARGUMENT ==
|
CU_ASSERT(NGHTTP2_ERR_INVALID_ARGUMENT ==
|
||||||
nghttp2_submit_priority(session, 1, -1));
|
nghttp2_submit_priority(session, NGHTTP2_FLAG_NONE, 1, -1));
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_submit_priority(session, 1, 1000000007));
|
CU_ASSERT(0 == nghttp2_submit_priority(session, NGHTTP2_FLAG_NONE, 1,
|
||||||
|
1000000007));
|
||||||
CU_ASSERT(1000000007 == stream->pri);
|
CU_ASSERT(1000000007 == stream->pri);
|
||||||
|
|
||||||
nghttp2_session_del(session);
|
nghttp2_session_del(session);
|
||||||
|
@ -2282,7 +2283,7 @@ void test_nghttp2_submit_settings(void)
|
||||||
nghttp2_session_server_new(&session, &callbacks, &ud);
|
nghttp2_session_server_new(&session, &callbacks, &ud);
|
||||||
|
|
||||||
CU_ASSERT(NGHTTP2_ERR_INVALID_ARGUMENT ==
|
CU_ASSERT(NGHTTP2_ERR_INVALID_ARGUMENT ==
|
||||||
nghttp2_submit_settings(session, iv, 5));
|
nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv, 5));
|
||||||
|
|
||||||
/* Make sure that local settings are not changed */
|
/* Make sure that local settings are not changed */
|
||||||
CU_ASSERT(NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS ==
|
CU_ASSERT(NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS ==
|
||||||
|
@ -2293,7 +2294,7 @@ void test_nghttp2_submit_settings(void)
|
||||||
session->local_settings[NGHTTP2_SETTINGS_FLOW_CONTROL_OPTIONS]);
|
session->local_settings[NGHTTP2_SETTINGS_FLOW_CONTROL_OPTIONS]);
|
||||||
|
|
||||||
/* Now sends without 5th one */
|
/* Now sends without 5th one */
|
||||||
CU_ASSERT(0 == nghttp2_submit_settings(session, iv, 4));
|
CU_ASSERT(0 == nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv, 4));
|
||||||
|
|
||||||
/* Make sure that local settings are changed */
|
/* Make sure that local settings are changed */
|
||||||
CU_ASSERT(50 ==
|
CU_ASSERT(50 ==
|
||||||
|
@ -2356,7 +2357,7 @@ void test_nghttp2_submit_settings_update_local_window_size(void)
|
||||||
NGHTTP2_STREAM_OPENED, NULL);
|
NGHTTP2_STREAM_OPENED, NULL);
|
||||||
stream->local_flow_control = 0;
|
stream->local_flow_control = 0;
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_submit_settings(session, iv, 1));
|
CU_ASSERT(0 == nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv, 1));
|
||||||
|
|
||||||
stream = nghttp2_session_get_stream(session, 1);
|
stream = nghttp2_session_get_stream(session, 1);
|
||||||
CU_ASSERT(0 == stream->recv_window_size);
|
CU_ASSERT(0 == stream->recv_window_size);
|
||||||
|
@ -2380,7 +2381,7 @@ void test_nghttp2_submit_settings_update_local_window_size(void)
|
||||||
NGHTTP2_PRI_DEFAULT,
|
NGHTTP2_PRI_DEFAULT,
|
||||||
NGHTTP2_STREAM_OPENED, NULL);
|
NGHTTP2_STREAM_OPENED, NULL);
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_submit_settings(session, iv, 2));
|
CU_ASSERT(0 == nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv, 2));
|
||||||
CU_ASSERT(NGHTTP2_INITIAL_WINDOW_SIZE == stream->local_window_size);
|
CU_ASSERT(NGHTTP2_INITIAL_WINDOW_SIZE == stream->local_window_size);
|
||||||
|
|
||||||
nghttp2_session_del(session);
|
nghttp2_session_del(session);
|
||||||
|
@ -2393,7 +2394,7 @@ void test_nghttp2_submit_settings_update_local_window_size(void)
|
||||||
NGHTTP2_STREAM_OPENED, NULL);
|
NGHTTP2_STREAM_OPENED, NULL);
|
||||||
stream->local_window_size = NGHTTP2_MAX_WINDOW_SIZE;
|
stream->local_window_size = NGHTTP2_MAX_WINDOW_SIZE;
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_submit_settings(session, iv, 1));
|
CU_ASSERT(0 == nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv, 1));
|
||||||
CU_ASSERT(NGHTTP2_STREAM_CLOSING == stream->state);
|
CU_ASSERT(NGHTTP2_STREAM_CLOSING == stream->state);
|
||||||
|
|
||||||
nghttp2_session_del(session);
|
nghttp2_session_del(session);
|
||||||
|
@ -2675,7 +2676,7 @@ void test_nghttp2_session_get_next_ob_item(void)
|
||||||
session->remote_settings[NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] = 2;
|
session->remote_settings[NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] = 2;
|
||||||
|
|
||||||
CU_ASSERT(NULL == nghttp2_session_get_next_ob_item(session));
|
CU_ASSERT(NULL == nghttp2_session_get_next_ob_item(session));
|
||||||
nghttp2_submit_ping(session, NULL);
|
nghttp2_submit_ping(session, NGHTTP2_FLAG_NONE, NULL);
|
||||||
CU_ASSERT(NGHTTP2_PING ==
|
CU_ASSERT(NGHTTP2_PING ==
|
||||||
OB_CTRL_TYPE(nghttp2_session_get_next_ob_item(session)));
|
OB_CTRL_TYPE(nghttp2_session_get_next_ob_item(session)));
|
||||||
|
|
||||||
|
@ -2721,7 +2722,7 @@ void test_nghttp2_session_pop_next_ob_item(void)
|
||||||
session->remote_settings[NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] = 1;
|
session->remote_settings[NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] = 1;
|
||||||
|
|
||||||
CU_ASSERT(NULL == nghttp2_session_pop_next_ob_item(session));
|
CU_ASSERT(NULL == nghttp2_session_pop_next_ob_item(session));
|
||||||
nghttp2_submit_ping(session, NULL);
|
nghttp2_submit_ping(session, NGHTTP2_FLAG_NONE, NULL);
|
||||||
nghttp2_submit_request(session, 1, nv, NULL, NULL);
|
nghttp2_submit_request(session, 1, nv, NULL, NULL);
|
||||||
|
|
||||||
item = nghttp2_session_pop_next_ob_item(session);
|
item = nghttp2_session_pop_next_ob_item(session);
|
||||||
|
@ -2938,7 +2939,7 @@ void test_nghttp2_session_defer_data(void)
|
||||||
CU_ASSERT(ud.data_source_length == 16*1024);
|
CU_ASSERT(ud.data_source_length == 16*1024);
|
||||||
|
|
||||||
ud.block_count = 1;
|
ud.block_count = 1;
|
||||||
nghttp2_submit_ping(session, NULL);
|
nghttp2_submit_ping(session, NGHTTP2_FLAG_NONE, NULL);
|
||||||
/* Sends PING */
|
/* Sends PING */
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
CU_ASSERT(NGHTTP2_PING == ud.sent_frame_type);
|
CU_ASSERT(NGHTTP2_PING == ud.sent_frame_type);
|
||||||
|
@ -3153,7 +3154,7 @@ void test_nghttp2_session_flow_control_disable_local(void)
|
||||||
iv[0].settings_id = NGHTTP2_SETTINGS_FLOW_CONTROL_OPTIONS;
|
iv[0].settings_id = NGHTTP2_SETTINGS_FLOW_CONTROL_OPTIONS;
|
||||||
iv[0].value = 1;
|
iv[0].value = 1;
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_submit_settings(session, iv,
|
CU_ASSERT(0 == nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv,
|
||||||
sizeof(iv)/sizeof(iv[0])));
|
sizeof(iv)/sizeof(iv[0])));
|
||||||
CU_ASSERT(0 == stream->local_flow_control);
|
CU_ASSERT(0 == stream->local_flow_control);
|
||||||
CU_ASSERT(0 == session->local_flow_control);
|
CU_ASSERT(0 == session->local_flow_control);
|
||||||
|
@ -3399,7 +3400,8 @@ void test_nghttp2_session_on_ctrl_not_send(void)
|
||||||
CU_ASSERT(0 ==
|
CU_ASSERT(0 ==
|
||||||
nghttp2_submit_headers(session, NGHTTP2_FLAG_END_STREAM, 1,
|
nghttp2_submit_headers(session, NGHTTP2_FLAG_END_STREAM, 1,
|
||||||
NGHTTP2_PRI_DEFAULT, nv, NULL));
|
NGHTTP2_PRI_DEFAULT, nv, NULL));
|
||||||
CU_ASSERT(0 == nghttp2_submit_rst_stream(session, 1, NGHTTP2_INTERNAL_ERROR));
|
CU_ASSERT(0 == nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE, 1,
|
||||||
|
NGHTTP2_INTERNAL_ERROR));
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
CU_ASSERT(1 == user_data.frame_not_send_cb_called);
|
CU_ASSERT(1 == user_data.frame_not_send_cb_called);
|
||||||
CU_ASSERT(NGHTTP2_HEADERS == user_data.not_sent_frame_type);
|
CU_ASSERT(NGHTTP2_HEADERS == user_data.not_sent_frame_type);
|
||||||
|
@ -3415,7 +3417,8 @@ void test_nghttp2_session_on_ctrl_not_send(void)
|
||||||
CU_ASSERT(0 ==
|
CU_ASSERT(0 ==
|
||||||
nghttp2_submit_headers(session, NGHTTP2_FLAG_END_STREAM, 3,
|
nghttp2_submit_headers(session, NGHTTP2_FLAG_END_STREAM, 3,
|
||||||
NGHTTP2_PRI_DEFAULT, nv, NULL));
|
NGHTTP2_PRI_DEFAULT, nv, NULL));
|
||||||
CU_ASSERT(0 == nghttp2_submit_rst_stream(session, 3, NGHTTP2_INTERNAL_ERROR));
|
CU_ASSERT(0 == nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE, 3,
|
||||||
|
NGHTTP2_INTERNAL_ERROR));
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
CU_ASSERT(1 == user_data.frame_not_send_cb_called);
|
CU_ASSERT(1 == user_data.frame_not_send_cb_called);
|
||||||
CU_ASSERT(NGHTTP2_HEADERS == user_data.not_sent_frame_type);
|
CU_ASSERT(NGHTTP2_HEADERS == user_data.not_sent_frame_type);
|
||||||
|
@ -3437,11 +3440,12 @@ void test_nghttp2_session_on_ctrl_not_send(void)
|
||||||
|
|
||||||
/* Send PRIORITY to stream ID = 1 which does not exist */
|
/* Send PRIORITY to stream ID = 1 which does not exist */
|
||||||
CU_ASSERT(NGHTTP2_ERR_STREAM_CLOSED ==
|
CU_ASSERT(NGHTTP2_ERR_STREAM_CLOSED ==
|
||||||
nghttp2_submit_priority(session, 1, 0));
|
nghttp2_submit_priority(session, NGHTTP2_FLAG_NONE, 1, 0));
|
||||||
|
|
||||||
user_data.frame_not_send_cb_called = 0;
|
user_data.frame_not_send_cb_called = 0;
|
||||||
/* Send GOAWAY */
|
/* Send GOAWAY */
|
||||||
CU_ASSERT(0 == nghttp2_submit_goaway(session, NGHTTP2_NO_ERROR, NULL, 0));
|
CU_ASSERT(0 == nghttp2_submit_goaway(session, NGHTTP2_FLAG_NONE,
|
||||||
|
NGHTTP2_NO_ERROR, NULL, 0));
|
||||||
CU_ASSERT(0 == nghttp2_submit_headers(session, NGHTTP2_FLAG_END_STREAM, -1,
|
CU_ASSERT(0 == nghttp2_submit_headers(session, NGHTTP2_FLAG_END_STREAM, -1,
|
||||||
NGHTTP2_PRI_DEFAULT, nv, NULL));
|
NGHTTP2_PRI_DEFAULT, nv, NULL));
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
|
@ -3461,10 +3465,11 @@ void test_nghttp2_session_get_outbound_queue_size(void)
|
||||||
CU_ASSERT(0 == nghttp2_session_client_new(&session, &callbacks, NULL));
|
CU_ASSERT(0 == nghttp2_session_client_new(&session, &callbacks, NULL));
|
||||||
CU_ASSERT(0 == nghttp2_session_get_outbound_queue_size(session));
|
CU_ASSERT(0 == nghttp2_session_get_outbound_queue_size(session));
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_submit_ping(session, NULL));
|
CU_ASSERT(0 == nghttp2_submit_ping(session, NGHTTP2_FLAG_NONE, NULL));
|
||||||
CU_ASSERT(1 == nghttp2_session_get_outbound_queue_size(session));
|
CU_ASSERT(1 == nghttp2_session_get_outbound_queue_size(session));
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_submit_goaway(session, NGHTTP2_NO_ERROR, NULL, 0));
|
CU_ASSERT(0 == nghttp2_submit_goaway(session, NGHTTP2_FLAG_NONE,
|
||||||
|
NGHTTP2_NO_ERROR, NULL, 0));
|
||||||
CU_ASSERT(2 == nghttp2_session_get_outbound_queue_size(session));
|
CU_ASSERT(2 == nghttp2_session_get_outbound_queue_size(session));
|
||||||
|
|
||||||
nghttp2_session_del(session);
|
nghttp2_session_del(session);
|
||||||
|
@ -3570,7 +3575,7 @@ void test_nghttp2_session_data_backoff_by_high_pri_frame(void)
|
||||||
/* data for DATA[1] is read from data_prd but it is not sent */
|
/* data for DATA[1] is read from data_prd but it is not sent */
|
||||||
CU_ASSERT(ud.data_source_length == 8*1024);
|
CU_ASSERT(ud.data_source_length == 8*1024);
|
||||||
|
|
||||||
nghttp2_submit_ping(session, NULL);
|
nghttp2_submit_ping(session, NGHTTP2_FLAG_NONE, NULL);
|
||||||
ud.block_count = 2;
|
ud.block_count = 2;
|
||||||
/* Sends DATA[1] + PING, PING is interleaved in DATA sequence */
|
/* Sends DATA[1] + PING, PING is interleaved in DATA sequence */
|
||||||
CU_ASSERT(0 == nghttp2_session_send(session));
|
CU_ASSERT(0 == nghttp2_session_send(session));
|
||||||
|
|
Loading…
Reference in New Issue