# HG changeset patch # User Roman Arutyunyan # Date 1584121472 -10800 # Node ID a5a1b3fad83485b70b4429cf442aa9f6c6148a2d # Parent 0aec63f50c29f579eba13fd56a029ddd6f9477e5 Fixed sanitizer errors. diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c --- a/src/core/ngx_connection.c +++ b/src/core/ngx_connection.c @@ -1178,11 +1178,6 @@ ngx_close_connection(ngx_connection_t *c ngx_uint_t log_error, level; ngx_socket_t fd; - if (c->fd == (ngx_socket_t) -1) { - ngx_log_error(NGX_LOG_ALERT, c->log, 0, "connection already closed"); - return; - } - if (c->read->timer_set) { ngx_del_timer(c->read); } @@ -1191,7 +1186,7 @@ ngx_close_connection(ngx_connection_t *c ngx_del_timer(c->write); } - if (!c->shared) { + if (!c->shared && c->fd != (ngx_socket_t) -1) { if (ngx_del_conn) { ngx_del_conn(c, NGX_CLOSE_EVENT); @@ -1223,6 +1218,11 @@ ngx_close_connection(ngx_connection_t *c ngx_free_connection(c); + if (c->fd == (ngx_socket_t) -1) { + ngx_log_debug0(NGX_LOG_DEBUG_CORE, c->log, 0, "connection has no fd"); + return; + } + fd = c->fd; c->fd = (ngx_socket_t) -1; diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c --- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -1934,6 +1934,7 @@ static ssize_t ngx_quic_stream_send(ngx_connection_t *c, u_char *buf, size_t size) { u_char *p; + ngx_connection_t *pc; ngx_quic_frame_t *frame; ngx_quic_stream_t *qs; ngx_quic_connection_t *qc; @@ -1942,8 +1943,8 @@ ngx_quic_stream_send(ngx_connection_t *c ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "quic send: %uz", size); qs = c->qs; - qc = qs->parent->quic; - + pc = qs->parent; + qc = pc->quic; // XXX: get direct pointer from stream structure? sn = ngx_quic_stream_lookup(&qc->stree, qs->id); @@ -1952,12 +1953,12 @@ ngx_quic_stream_send(ngx_connection_t *c return NGX_ERROR; } - frame = ngx_pcalloc(c->pool, sizeof(ngx_quic_frame_t)); + frame = ngx_pcalloc(pc->pool, sizeof(ngx_quic_frame_t)); if (frame == NULL) { return 0; } - p = ngx_pnalloc(c->pool, size); + p = ngx_pnalloc(pc->pool, size); if (p == NULL) { return 0; }