fprintf(debug_fp, "%s%s(in %s() line %d): %s", prefix?prefix:"", prefix?" ":"", function, line, buffer);
else
fprintf(debug_fp, "%s%s: %s", prefix?prefix:"", prefix?" ":"", buffer);
+ fflush(debug_fp);
}
}
return;
fprintf(stderr, "LCR: Signal received: %d\n", sigset);
PDEBUG(DEBUG_LOG, "Signal received: %d\n", sigset);
+ /* reset signals */
+ signal(SIGINT,SIG_DFL);
+ signal(SIGHUP,SIG_DFL);
+ signal(SIGTERM,SIG_DFL);
+ signal(SIGPIPE,SIG_DFL);
if (!quit) {
quit = sigset;
/* set scheduler & priority */
created_misdn = 0;
char tracetext[256], lock[128];
char options_error[256];
+ int polling = 0;
#if 0
/* init fdset */
PERROR("%s", options_error);
goto free;
}
+ polling = options.polling;
/* init mISDN */
if (mISDN_initialize() < 0)
/* generate alaw / ulaw tables */
generate_tables(options.law);
+#ifdef WITH_SIP
+ /* init SIP globals */
+ sip_init();
+ polling = 1; /* must poll, because of SIP events */
+#endif
+
#ifdef WITH_SS5
/* init ss5 sine tables */
ss5_sine_generate();
}
#else
if (options.polling) {
- if (!select_main(1, NULL, NULL, NULL))
+ if (!select_main(1, NULL, NULL, NULL)) {
+#ifdef WITH_SIP
+ /* FIXME: check if work was done */
+ sip_handle();
+#endif
usleep(10000);
+ }
} else
select_main(0, NULL, NULL, NULL);
#endif
gsm_exit(0);
#endif
+#ifdef WITH_SIP
+ /* cleanup SIP globals */
+ sip_exit();
+#endif
+
/* close loopback, if used by GSM or remote */
if (mISDNloop.sock > -1)
mISDNloop_close();