comparison src/os/unix/ngx_process_cycle.c @ 7663:7cbf6389194b

Fixed SIGQUIT not removing listening UNIX sockets (closes #753). Listening UNIX sockets were not removed on graceful shutdown, preventing the next runs. The fix is to replace the custom socket closing code in ngx_master_process_cycle() by the ngx_close_listening_sockets() call.
author Ruslan Ermilov <ru@nginx.com>
date Mon, 01 Jun 2020 22:31:23 +0300
parents 7f28b61c92f0
children 0215ec9aaa8a
comparison
equal deleted inserted replaced
7662:9c038f5e0464 7663:7cbf6389194b
75 { 75 {
76 char *title; 76 char *title;
77 u_char *p; 77 u_char *p;
78 size_t size; 78 size_t size;
79 ngx_int_t i; 79 ngx_int_t i;
80 ngx_uint_t n, sigio; 80 ngx_uint_t sigio;
81 sigset_t set; 81 sigset_t set;
82 struct itimerval itv; 82 struct itimerval itv;
83 ngx_uint_t live; 83 ngx_uint_t live;
84 ngx_msec_t delay; 84 ngx_msec_t delay;
85 ngx_listening_t *ls;
86 ngx_core_conf_t *ccf; 85 ngx_core_conf_t *ccf;
87 86
88 sigemptyset(&set); 87 sigemptyset(&set);
89 sigaddset(&set, SIGCHLD); 88 sigaddset(&set, SIGCHLD);
90 sigaddset(&set, SIGALRM); 89 sigaddset(&set, SIGALRM);
202 } 201 }
203 202
204 if (ngx_quit) { 203 if (ngx_quit) {
205 ngx_signal_worker_processes(cycle, 204 ngx_signal_worker_processes(cycle,
206 ngx_signal_value(NGX_SHUTDOWN_SIGNAL)); 205 ngx_signal_value(NGX_SHUTDOWN_SIGNAL));
207 206 ngx_close_listening_sockets(cycle);
208 ls = cycle->listening.elts;
209 for (n = 0; n < cycle->listening.nelts; n++) {
210 if (ngx_close_socket(ls[n].fd) == -1) {
211 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno,
212 ngx_close_socket_n " %V failed",
213 &ls[n].addr_text);
214 }
215 }
216 cycle->listening.nelts = 0;
217 207
218 continue; 208 continue;
219 } 209 }
220 210
221 if (ngx_reconfigure) { 211 if (ngx_reconfigure) {