Mercurial > hg > nginx
comparison src/stream/ngx_stream_core_module.c @ 6975:d7ce41bdf050
Stream: configurable socket buffer sizes.
The "rcvbuf" and "sndbuf" parameters are now supported by
the "listen" directive.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Mon, 03 Apr 2017 17:29:19 +0300 |
parents | cebf5fed00bf |
children | ed1101bbf19f |
comparison
equal
deleted
inserted
replaced
6974:289403abc84e | 6975:d7ce41bdf050 |
---|---|
580 static char * | 580 static char * |
581 ngx_stream_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | 581 ngx_stream_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) |
582 { | 582 { |
583 ngx_stream_core_srv_conf_t *cscf = conf; | 583 ngx_stream_core_srv_conf_t *cscf = conf; |
584 | 584 |
585 ngx_str_t *value; | 585 ngx_str_t *value, size; |
586 ngx_url_t u; | 586 ngx_url_t u; |
587 ngx_uint_t i, backlog; | 587 ngx_uint_t i, backlog; |
588 ngx_stream_listen_t *ls, *als; | 588 ngx_stream_listen_t *ls, *als; |
589 ngx_stream_core_main_conf_t *cmcf; | 589 ngx_stream_core_main_conf_t *cmcf; |
590 | 590 |
618 | 618 |
619 ngx_memcpy(&ls->sockaddr.sockaddr, &u.sockaddr, u.socklen); | 619 ngx_memcpy(&ls->sockaddr.sockaddr, &u.sockaddr, u.socklen); |
620 | 620 |
621 ls->socklen = u.socklen; | 621 ls->socklen = u.socklen; |
622 ls->backlog = NGX_LISTEN_BACKLOG; | 622 ls->backlog = NGX_LISTEN_BACKLOG; |
623 ls->rcvbuf = -1; | |
624 ls->sndbuf = -1; | |
623 ls->type = SOCK_STREAM; | 625 ls->type = SOCK_STREAM; |
624 ls->wildcard = u.wildcard; | 626 ls->wildcard = u.wildcard; |
625 ls->ctx = cf->ctx; | 627 ls->ctx = cf->ctx; |
626 | 628 |
627 #if (NGX_HAVE_INET6) | 629 #if (NGX_HAVE_INET6) |
653 "invalid backlog \"%V\"", &value[i]); | 655 "invalid backlog \"%V\"", &value[i]); |
654 return NGX_CONF_ERROR; | 656 return NGX_CONF_ERROR; |
655 } | 657 } |
656 | 658 |
657 backlog = 1; | 659 backlog = 1; |
660 | |
661 continue; | |
662 } | |
663 | |
664 if (ngx_strncmp(value[i].data, "rcvbuf=", 7) == 0) { | |
665 size.len = value[i].len - 7; | |
666 size.data = value[i].data + 7; | |
667 | |
668 ls->rcvbuf = ngx_parse_size(&size); | |
669 ls->bind = 1; | |
670 | |
671 if (ls->rcvbuf == NGX_ERROR) { | |
672 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
673 "invalid rcvbuf \"%V\"", &value[i]); | |
674 return NGX_CONF_ERROR; | |
675 } | |
676 | |
677 continue; | |
678 } | |
679 | |
680 if (ngx_strncmp(value[i].data, "sndbuf=", 7) == 0) { | |
681 size.len = value[i].len - 7; | |
682 size.data = value[i].data + 7; | |
683 | |
684 ls->sndbuf = ngx_parse_size(&size); | |
685 ls->bind = 1; | |
686 | |
687 if (ls->sndbuf == NGX_ERROR) { | |
688 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, | |
689 "invalid sndbuf \"%V\"", &value[i]); | |
690 return NGX_CONF_ERROR; | |
691 } | |
658 | 692 |
659 continue; | 693 continue; |
660 } | 694 } |
661 | 695 |
662 if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) { | 696 if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) { |