* is going to exit */
}
+static void __remote_quit_handler(int num)
+{
+ sig_flags.need_quit = 1;
+}
+
static const char *fix_header(char *outbuf, int maxout, const char *s, char *cmp)
{
const char *c;
char *ebuf;
int num = 0;
+ memset(&sig_flags, 0, sizeof(sig_flags));
+ signal(SIGINT, __remote_quit_handler);
+ signal(SIGTERM, __remote_quit_handler);
+ signal(SIGHUP, __remote_quit_handler);
+
if (read(ast_consock, buf, sizeof(buf)) < 0) {
ast_log(LOG_ERROR, "read() failed: %s\n", strerror(errno));
return;
if (data) {
if (write(ast_consock, data, strlen(data) + 1) < 0) {
ast_log(LOG_ERROR, "write() failed: %s\n", strerror(errno));
+ if (sig_flags.need_quit == 1) {
+ return;
+ }
}
}
stringp = buf;
char buf[512] = "", *curline = buf, *nextline;
int not_written = 1;
+ if (sig_flags.need_quit == 1) {
+ break;
+ }
+
if (read(ast_consock, buf, sizeof(buf) - 1) <= 0) {
break;
}
for (;;) {
ebuf = (char *)el_gets(el, &num);
+ if (sig_flags.need_quit == 1) {
+ break;
+ }
+
if (!ebuf && write(1, "", 1) < 0)
break;