* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
sending send_underlying; /* underlying send Curl_send callback */
recving recv_underlying; /* underlying recv Curl_recv callback */
bool closed; /* TRUE on HTTP2 stream close */
+ uint32_t error_code; /* HTTP/2 error code */
Curl_send_buffer *header_recvbuf; /* store response headers. We
store non-final and final
response headers into it. */
return 0;
}
+ c->error_code = error_code;
c->closed = TRUE;
return 0;
/* Reset to FALSE to prevent infinite loop in readwrite_data
function. */
httpc->closed = FALSE;
+ if(httpc->error_code != NGHTTP2_NO_ERROR) {
+ failf(conn->data,
+ "HTTP/2 stream = %x was not closed cleanly: error_code = %d",
+ httpc->stream_id, httpc->error_code);
+ *err = CURLE_HTTP2;
+ return -1;
+ }
return 0;
}
*err = CURLE_AGAIN;
infof(conn->data, "Using HTTP2\n");
httpc->bodystarted = FALSE;
+ httpc->error_code = NGHTTP2_NO_ERROR;
httpc->closed = FALSE;
httpc->header_recvbuf = Curl_add_buffer_init();
httpc->nread_header_recvbuf = 0;