diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c index 668084a7b..e18b3a5c6 100644 --- a/src/event/ngx_event_connect.c +++ b/src/event/ngx_event_connect.c @@ -65,11 +65,23 @@ ngx_event_connect_peer(ngx_peer_connection_t *pc) if (pc->rcvbuf) { if (setsockopt(s, SOL_SOCKET, SO_RCVBUF, - (const void *) &pc->rcvbuf, sizeof(int)) == -1) + (const void *) &pc->rcvbuf, sizeof(int)) + == -1) { ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno, - "setsockopt(SO_RCVBUF) failed"); - goto failed; + "setsockopt(SO_RCVBUF, %d) failed, ignored", + pc->rcvbuf); + } + } + + if (pc->sndbuf) { + if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, + (const void *) &pc->sndbuf, sizeof(int)) + == -1) + { + ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno, + "setsockopt(SO_SNDBUF, %d) failed, ignored", + pc->sndbuf); } } diff --git a/src/event/ngx_event_connect.h b/src/event/ngx_event_connect.h index e428e7376..0604fef0f 100644 --- a/src/event/ngx_event_connect.h +++ b/src/event/ngx_event_connect.h @@ -57,6 +57,7 @@ struct ngx_peer_connection_s { int type; int rcvbuf; + int sndbuf; ngx_log_t *log;