Project

General

Profile

Enhancement #758 » 0001-Close-and-re-open-listening-socket-when-reloading-BI.patch

Loïc Gomez, 2022-03-20 15:17

View differences:

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
- 
    (1-1/1)