p->channel = c;
p->first_response = 1;
c->proxy = p;
- // We will add EVENT_OUTPUT below
p->iochan = iochan_create(sock, proxy_io, EVENT_INPUT, "http_proxy");
iochan_setdata(p->iochan, p);
- iochan_add(ser->iochan_man, p->iochan);
+ if (iochan_add(ser->iochan_man, p->iochan, 5))
+ {
+ iochan_destroy(p->iochan);
+ xfree(p);
+ return -1;
+ }
}
// Do _not_ modify Host: header, just checking it's existence
(long long) iochan_getfd(i), sz);
fwrite(wb->buf, 1, wb->offset + wb->len,
hc->http_server->record_file);
- fputc('\n', hc->http_server->record_file);
fflush(hc->http_server->record_file);
}
#endif
c = iochan_create(s, http_io, EVENT_INPUT | EVENT_EXCEPT,
"http_session_socket");
-
ch = http_channel_create(server->http_server, host, server);
ch->iochan = c;
iochan_setdata(c, ch);
- iochan_add(server->iochan_man, c);
+ if (iochan_add(server->iochan_man, c, 0))
+ {
+ yaz_log(YLOG_WARN, "Refusing incoming HTTP connection");
+ http_channel_destroy(c);
+ }
}
/* Create a http-channel listener, syntax [host:]port */
return 1;
}
}
- server->http_server = http_server_create();
+ c = iochan_create(s, http_accept, EVENT_INPUT|EVENT_EXCEPT, "http_server");
+ if (iochan_add(server->iochan_man, c, 0))
+ {
+ yaz_log(YLOG_WARN, "Can not create HTTP binding socket");
+ iochan_destroy(c);
+ return -1;
+ }
+
+ server->http_server = http_server_create();
server->http_server->record_file = record_file;
server->http_server->listener_socket = s;
-
- c = iochan_create(s, http_accept, EVENT_INPUT | EVENT_EXCEPT, "http_server");
iochan_setdata(c, server);
- iochan_add(server->iochan_man, c);
return 0;
}