X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fhttp.c;h=a4f08441915364b27902b08d9815ae8520299371;hb=24ad8ea356d71c764af19897e2719670a94a3a05;hp=994a4521884473128b9955207dd98e0d1b05ed9a;hpb=474aa2bb93c17cf82653574c8c8632e9907419bc;p=pazpar2-moved-to-github.git diff --git a/src/http.c b/src/http.c index 994a452..a4f0844 100644 --- a/src/http.c +++ b/src/http.c @@ -796,11 +796,15 @@ static int http_proxy(struct http_request *rq) 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)) + { + iochan_destroy(p->iochan); + xfree(p); + return -1; + } } // Do _not_ modify Host: header, just checking it's existence @@ -1219,11 +1223,13 @@ static void http_accept(IOCHAN i, int event) 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)) + { + http_channel_destroy(c); + } } /* Create a http-channel listener, syntax [host:]port */ @@ -1331,15 +1337,19 @@ int http_init(struct conf_server *server, const char *record_fname) 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)) + { + 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; }