X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fhttp.c;h=ee60f8d9933190ccb48b31be52b5e89ad8bbaa73;hb=8d8eb33f55a2f62f00463e7402c81c0cc02bde0e;hp=6748bbece3295c55681a621a057b8af7ea44a17f;hpb=1c320abd379ba19f7ab6ff3ed3a31fb72873990b;p=pazpar2-moved-to-github.git diff --git a/src/http.c b/src/http.c index 6748bbe..ee60f8d 100644 --- a/src/http.c +++ b/src/http.c @@ -839,6 +839,13 @@ void http_send_response(struct http_channel *ch) struct http_response *rs = ch->response; struct http_buf *hb; + yaz_timing_stop(ch->yt); + yaz_log(YLOG_LOG, "Response: %6.5f %s%s%s", + yaz_timing_get_real(ch->yt), + ch->request->path, + *ch->request->search ? "?" : "", + ch->request->search); + assert(rs); hb = http_serialize_response(ch, rs); if (!hb) @@ -934,6 +941,7 @@ static void http_io(IOCHAN i, int event) fflush(hc->http_server->record_file); } #endif + yaz_timing_start(hc->yt); if (!(hc->request = http_parse_request(hc, &hc->iqueue, reqlen))) { yaz_log(YLOG_WARN, "Failed to parse request"); @@ -1121,6 +1129,7 @@ static void http_channel_destroy(IOCHAN i) http_buf_destroy_queue(s->http_server, s->proxy->oqueue); xfree(s->proxy); } + yaz_timing_destroy(&s->yt); http_buf_destroy_queue(s->http_server, s->iqueue); http_buf_destroy_queue(s->http_server, s->oqueue); http_fire_observers(s); @@ -1168,6 +1177,7 @@ static struct http_channel *http_channel_create(http_server_t hs, } strcpy(r->addr, addr); r->observers = 0; + r->yt = yaz_timing_create(); return r; } @@ -1176,21 +1186,21 @@ static struct http_channel *http_channel_create(http_server_t hs, static void http_accept(IOCHAN i, int event) { char host[256]; - struct sockaddr addr; + struct sockaddr_storage addr; int fd = iochan_getfd(i); - socklen_t len; + socklen_t len = sizeof addr; int s; IOCHAN c; struct http_channel *ch; struct conf_server *server = iochan_getdata(i); - len = sizeof addr; - if ((s = accept(fd, &addr, &len)) < 0) + if ((s = accept(fd, (struct sockaddr *) &addr, &len)) < 0) { yaz_log(YLOG_WARN|YLOG_ERRNO, "accept"); return; } - if (getnameinfo(&addr, len, host, sizeof(host)-1, 0, 0, NI_NUMERICHOST)) + if (getnameinfo((struct sockaddr *) &addr, len, host, sizeof(host)-1, 0, 0, + NI_NUMERICHOST)) { yaz_log(YLOG_WARN|YLOG_ERRNO, "getnameinfo"); CLOSESOCKET(s);