QUIC: reset qc->error to zero again.
Following the previous change that removed posting a close event in OpenSSL compat layer, now ngx_quic_close_connection() is always called on error path with either NGX_ERROR or qc->error set. This allows to remove a special value -1 served as a missing error, which simplifies the code. Partially reverts d3fb12d77. Also, this improves handling of the draining connection state, which consists of posting a close event with NGX_OK and no qc->error set, where it was previously converted to NGX_QUIC_ERR_INTERNAL_ERROR. Notably, this is rather a cosmetic fix, because drained connections do not send any packets including CONNECTION_CLOSE, and qc->error is not otherwise used.
This commit is contained in:
parent
7468a10b62
commit
5d7fd4a7e3
@ -72,7 +72,7 @@ ngx_quic_connstate_dbg(ngx_connection_t *c)
|
|||||||
|
|
||||||
if (qc) {
|
if (qc) {
|
||||||
|
|
||||||
if (qc->error != (ngx_uint_t) -1) {
|
if (qc->error) {
|
||||||
p = ngx_slprintf(p, last, "%s", qc->error_app ? " app" : "");
|
p = ngx_slprintf(p, last, "%s", qc->error_app ? " app" : "");
|
||||||
p = ngx_slprintf(p, last, " error:%ui", qc->error);
|
p = ngx_slprintf(p, last, " error:%ui", qc->error);
|
||||||
|
|
||||||
@ -520,7 +520,7 @@ ngx_quic_close_connection(ngx_connection_t *c, ngx_int_t rc)
|
|||||||
* to terminate the connection immediately.
|
* to terminate the connection immediately.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (qc->error == (ngx_uint_t) -1) {
|
if (qc->error == 0 && rc == NGX_ERROR) {
|
||||||
qc->error = NGX_QUIC_ERR_INTERNAL_ERROR;
|
qc->error = NGX_QUIC_ERR_INTERNAL_ERROR;
|
||||||
qc->error_app = 0;
|
qc->error_app = 0;
|
||||||
}
|
}
|
||||||
@ -961,7 +961,7 @@ ngx_quic_handle_payload(ngx_connection_t *c, ngx_quic_header_t *pkt)
|
|||||||
|
|
||||||
qc = ngx_quic_get_connection(c);
|
qc = ngx_quic_get_connection(c);
|
||||||
|
|
||||||
qc->error = (ngx_uint_t) -1;
|
qc->error = 0;
|
||||||
qc->error_reason = 0;
|
qc->error_reason = 0;
|
||||||
|
|
||||||
c->log->action = "decrypting packet";
|
c->log->action = "decrypting packet";
|
||||||
|
@ -415,7 +415,7 @@ ngx_quic_crypto_input(ngx_connection_t *c, ngx_chain_t *data,
|
|||||||
|
|
||||||
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_do_handshake: %d", n);
|
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_do_handshake: %d", n);
|
||||||
|
|
||||||
if (qc->error != (ngx_uint_t) -1) {
|
if (qc->error) {
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user