Enhancement #758 » 0001-Close-and-re-open-listening-socket-when-reloading-BI.patch
src/bip_main.c | ||
---|---|---|
307 | 307 |
mylog(LOG_ERROR, "Could not write to PID file"); |
308 | 308 |
close(fd); |
309 | 309 | |
310 |
bip.listener = listen_new(conf_ip, conf_port, conf_css); |
|
311 |
if (!bip.listener || bip.listener->connected == CONN_ERROR) |
|
312 |
fatal("Could not create listening socket"); |
|
310 |
for (unsigned int listen_fails = 0;;) { |
|
311 |
bip.listener = listen_new(conf_ip, conf_port, conf_css); |
|
312 |
if (!bip.listener || bip.listener->connected == CONN_ERROR) { |
|
313 |
/* Let's allow 3 attempts before exiting */ |
|
314 |
if (listen_fails > 2) |
|
315 |
fatal("Could not create listening socket (3/3), exiting."); |
|
316 |
listen_fails++; |
|
317 |
mylog(LOG_ERROR, |
|
318 |
"Could not create listening socket, " |
|
319 |
"retrying in 2s (%d/3)...", |
|
320 |
listen_fails); |
|
321 |
if (bip.listener) |
|
322 |
connection_free(bip.listener); |
|
323 |
sleep(2); |
|
324 |
continue; |
|
325 |
} |
|
313 | 326 | |
314 |
for (;;) {
|
|
327 |
listen_fails = 0;
|
|
315 | 328 |
irc_main(&bip); |
316 | 329 | |
317 | 330 |
sighup = 0; |
331 |
mylog(LOG_INFO, |
|
332 |
"Closing listening socket, reloading config..."); |
|
333 | ||
334 |
if (cn_is_connected(bip.listener)) |
|
335 |
connection_close(bip.listener); |
|
336 |
connection_free(bip.listener); |
|
318 | 337 | |
319 | 338 |
conf = fopen(confpath, "r"); |
320 | 339 |
if (!conf) |
321 |
- |