Lines Matching refs:srv

48     server * const srv = srv_socket->srv;  in network_server_handle_fdevent()  local
51 log_error(srv->errh, __FILE__, __LINE__, in network_server_handle_fdevent()
58 int loops = (int)srv->lim_conns; in network_server_handle_fdevent()
85 connection *con = connection_accepted(srv, srv_socket, &addr, fd); in network_server_handle_fdevent()
101 log_perror(srv->errh, __FILE__, __LINE__, "accept()"); in network_server_handle_fdevent()
207 static int network_host_parse_addr(server *srv, sock_addr *addr, socklen_t *addr_len, buffer *host,… in network_host_parse_addr() argument
212 unsigned int port = srv->srvconf.port; in network_host_parse_addr()
214 log_error(srv->errh, __FILE__, __LINE__, in network_host_parse_addr()
222 return network_abstract_socket_parse(host,addr,addr_len,srv->errh); in network_host_parse_addr()
224 sock_addr_from_str_hints(addr,addr_len,h,AF_UNIX,0,srv->errh)) in network_host_parse_addr()
228 log_error(srv->errh, __FILE__, __LINE__, in network_host_parse_addr()
233 buffer * const tb = srv->tmp_buf; in network_host_parse_addr()
251 log_error(srv->errh, __FILE__, __LINE__, in network_host_parse_addr()
262 sock_addr_from_str_hints(addr,addr_len,chost,family,port,srv->errh)) { in network_host_parse_addr()
268 static void network_srv_sockets_append(server *srv, server_socket *srv_socket) { in network_srv_sockets_append() argument
269 server_socket_array * const srv_sockets = &srv->srv_sockets; in network_srv_sockets_append()
357 static int network_server_init(server *srv, const network_socket_config *s, buffer *host_token, siz… in network_server_init() argument
367 log_error(srv->errh, __FILE__, __LINE__, in network_server_init()
375 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in network_server_init()
376 if (buffer_is_equal(srv->srv_sockets.ptr[i]->srv_token, host_token)) { in network_server_init()
377 if ((unsigned short)~0u == srv->srv_sockets.ptr[i]->sidx) { in network_server_init()
378 srv->srv_sockets.ptr[i]->sidx = sidx; in network_server_init()
379 srv->srv_sockets.ptr[i]->is_ssl = s->ssl_enabled; in network_server_init()
387 log_error(srv->errh, __FILE__, __LINE__, in network_server_init()
397 log_perror(srv->errh, __FILE__, __LINE__, "getsockname()"); in network_server_init()
400 } else if (0 != network_host_parse_addr(srv, &addr, &addr_len, host_token, use_ipv6)) { in network_server_init()
411 log_error(srv->errh, __FILE__, __LINE__, in network_server_init()
424 if (srv->srvconf.preflight_check) { in network_server_init()
429 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in network_server_init()
430 if (0 == memcmp(&srv->srv_sockets.ptr[i]->addr, &addr, sizeof(addr))) { in network_server_init()
431 if ((unsigned short)~0u == srv->srv_sockets.ptr[i]->sidx) { in network_server_init()
432 srv->srv_sockets.ptr[i]->sidx = sidx; in network_server_init()
433 srv->srv_sockets.ptr[i]->is_ssl = s->ssl_enabled; in network_server_init()
444 srv_socket->srv = srv; in network_server_init()
446 network_srv_sockets_append(srv, srv_socket); in network_server_init()
448 if (srv->sockets_disabled) { /* lighttpd -1 (one-shot mode) */ in network_server_init()
452 if (srv->srvconf.systemd_socket_activation) { in network_server_init()
453 for (uint32_t i = 0; i < srv->srv_sockets_inherited.used; ++i) { in network_server_init()
454 if (0 != memcmp(&srv->srv_sockets_inherited.ptr[i]->addr, &srv_socket->addr, addr_len)) continue; in network_server_init()
455 if ((unsigned short)~0u == srv->srv_sockets_inherited.ptr[i]->sidx) { in network_server_init()
456 srv->srv_sockets_inherited.ptr[i]->sidx = sidx; in network_server_init()
458 stdin_fd = srv->srv_sockets_inherited.ptr[i]->fd; in network_server_init()
466 log_perror(srv->errh, __FILE__, __LINE__, "fcntl"); in network_server_init()
475 log_perror(srv->errh, __FILE__, __LINE__, "socket"); in network_server_init()
479 log_error(srv->errh, __FILE__, __LINE__, in network_server_init()
492 log_perror(srv->errh, __FILE__, __LINE__, in network_server_init()
498 log_perror(srv->errh, __FILE__, __LINE__, "fcntl"); in network_server_init()
505 log_perror(srv->errh, __FILE__, __LINE__, "socket"); in network_server_init()
513 log_perror(srv->errh, __FILE__, __LINE__, "setsockopt(IPV6_V6ONLY)"); in network_server_init()
521 srv->cur_fds = srv_socket->fd; in network_server_init()
524 log_perror(srv->errh, __FILE__, __LINE__, "setsockopt(SO_REUSEADDR)"); in network_server_init()
530 log_perror(srv->errh, __FILE__, __LINE__, "setsockopt(TCP_NODELAY)"); in network_server_init()
537 log_perror(srv->errh, __FILE__, __LINE__, in network_server_init()
551 log_perror(srv->errh, __FILE__, __LINE__, in network_server_init()
560 log_perror(srv->errh, __FILE__, __LINE__, "listen"); in network_server_init()
570 log_perror(srv->errh, __FILE__, __LINE__, "can't set TCP_DEFER_ACCEPT"); in network_server_init()
586 log_perror(srv->errh, __FILE__, __LINE__, in network_server_init()
597 int network_close(server *srv) { in network_close() argument
598 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in network_close()
599 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in network_close()
601 network_unregister_sock(srv, srv_socket); in network_close()
610 free(srv->srv_sockets.ptr); in network_close()
611 srv->srv_sockets.ptr = NULL; in network_close()
612 srv->srv_sockets.used = 0; in network_close()
614 for (uint32_t i = 0; i < srv->srv_sockets_inherited.used; ++i) { in network_close()
615 server_socket *srv_socket = srv->srv_sockets_inherited.ptr[i]; in network_close()
625 free(srv->srv_sockets_inherited.ptr); in network_close()
626 srv->srv_sockets_inherited.ptr = NULL; in network_close()
627 srv->srv_sockets_inherited.used = 0; in network_close()
632 void network_socket_activation_to_env (server * const srv) { in network_socket_activation_to_env() argument
636 for (uint32_t n = 0, i; n < srv->srv_sockets.used; ++n) { in network_socket_activation_to_env()
637 server_socket *srv_socket = srv->srv_sockets.ptr[n]; in network_socket_activation_to_env()
645 for (i = n+1; i < srv->srv_sockets.used; ++i) { in network_socket_activation_to_env()
646 if (fd == srv->srv_sockets.ptr[i]->fd) in network_socket_activation_to_env()
649 if (i < srv->srv_sockets.used) { in network_socket_activation_to_env()
664 buffer * const tb = srv->tmp_buf; in network_socket_activation_to_env()
669 buffer_append_int(tb, srv->pid); /* getpid() */ in network_socket_activation_to_env()
673 static int network_socket_activation_nfds(server *srv, const network_socket_config *s, int nfds) { in network_socket_activation_nfds() argument
682 log_perror(srv->errh, __FILE__, __LINE__, in network_socket_activation_nfds()
687 rc = network_server_init(srv, s, host, 0, fd); in network_socket_activation_nfds()
689 srv->srv_sockets.ptr[srv->srv_sockets.used-1]->sidx = (unsigned short)~0u; in network_socket_activation_nfds()
692 memcpy(&srv->srv_sockets_inherited, &srv->srv_sockets, sizeof(server_socket_array)); in network_socket_activation_nfds()
693 memset(&srv->srv_sockets, 0, sizeof(server_socket_array)); in network_socket_activation_nfds()
697 static int network_socket_activation_from_env(server *srv, const network_socket_config *s) { in network_socket_activation_from_env() argument
709 ? network_socket_activation_nfds(srv, s, nfds) in network_socket_activation_from_env()
718 int network_init(server *srv, int stdin_fd) { in network_init() argument
759 if (0 != network_write_init(srv)) return -1; in network_init()
765 if (!config_plugin_values_init(srv, p, cpk, "network")) in network_init()
781 if (config_feature_bool(srv, "server.graceful-restart-bg", 0)) in network_init()
782 srv->srvconf.systemd_socket_activation = 1; in network_init()
787 if (srv->srvconf.systemd_socket_activation) { in network_init()
788 for (uint32_t i = 0; i < srv->srv_sockets_inherited.used; ++i) { in network_init()
789 srv->srv_sockets_inherited.ptr[i]->sidx = (unsigned short)~0u; in network_init()
791 rc = network_socket_activation_from_env(srv, &p->defaults); in network_init()
793 if (0 == srv->srv_sockets_inherited.used) { in network_init()
794 srv->srvconf.systemd_socket_activation = 0; in network_init()
801 buffer_copy_buffer(b, srv->srvconf.bindhost); in network_init()
803 rc = (0 == srv->srv_sockets.used) in network_init()
804 ? network_server_init(srv, &p->defaults, b, 0, stdin_fd) in network_init()
811 for (uint32_t i = 1; i < srv->config_context->used; ++i) { in network_init()
830 rc = network_server_init(srv, &p->conf, host_token, i, -1); in network_init()
836 rc = network_host_parse_addr(srv, &addr, &addr_len, in network_init()
852 if ((!srv->srvconf.systemd_socket_activation || srv->srvconf.bindhost) in network_init()
855 if (srv->srvconf.bindhost) in network_init()
856 buffer_copy_buffer(b, srv->srvconf.bindhost); in network_init()
860 buffer_append_int(b, srv->srvconf.port); in network_init()
866 rc = network_server_init(srv, &p->defaults, b, 0, -1); in network_init()
871 if (srv->srvconf.systemd_socket_activation) { in network_init()
874 for (uint32_t i = 0; i < srv->srv_sockets_inherited.used; ++i) { in network_init()
876 != srv->srv_sockets_inherited.ptr[i]->sidx) in network_init()
878 srv->srv_sockets_inherited.ptr[i]->sidx = 0; in network_init()
880 memcpy(srv_socket, srv->srv_sockets_inherited.ptr[i], in network_init()
885 network_srv_sockets_append(srv, srv_socket); in network_init()
890 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in network_init()
891 if ((unsigned short)~0u == srv->srv_sockets.ptr[i]->sidx) { in network_init()
892 srv->srv_sockets.ptr[i]->sidx = 0; in network_init()
893 srv->srv_sockets.ptr[i]->is_ssl = p->defaults.ssl_enabled; in network_init()
903 void network_unregister_sock(server *srv, server_socket *srv_socket) { in network_unregister_sock() argument
907 fdevent_fdnode_event_del(srv->ev, fdn); in network_unregister_sock()
908 fdevent_unregister(srv->ev, fdn); in network_unregister_sock()
911 int network_register_fdevents(server *srv) { in network_register_fdevents() argument
912 if (-1 == fdevent_reset(srv->ev)) { in network_register_fdevents()
916 if (srv->sockets_disabled) return 0; /* lighttpd -1 (one-shot mode) */ in network_register_fdevents()
919 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in network_register_fdevents()
920 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in network_register_fdevents()
922 …srv_socket->fdn = fdevent_register(srv->ev, srv_socket->fd, network_server_handle_fdevent, srv_soc… in network_register_fdevents()
923 fdevent_fdnode_event_set(srv->ev, srv_socket->fdn, FDEVENT_IN); in network_register_fdevents()