projects
/
pazpar2-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Only fire one non-timeout event for Z39.50/SRU clients
[pazpar2-moved-to-github.git]
/
src
/
http.c
diff --git
a/src/http.c
b/src/http.c
index
6748bbe
..
82dff4b
100644
(file)
--- a/
src/http.c
+++ b/
src/http.c
@@
-839,6
+839,14
@@
void http_send_response(struct http_channel *ch)
struct http_response *rs = ch->response;
struct http_buf *hb;
struct http_response *rs = ch->response;
struct http_buf *hb;
+ yaz_timing_stop(ch->yt);
+ yaz_log(YLOG_LOG, "Response: %6.5f %d %s%s%s ",
+ yaz_timing_get_real(ch->yt),
+ iochan_getfd(ch->iochan),
+ ch->request->path,
+ *ch->request->search ? "?" : "",
+ ch->request->search);
+
assert(rs);
hb = http_serialize_response(ch, rs);
if (!hb)
assert(rs);
hb = http_serialize_response(ch, rs);
if (!hb)
@@
-934,6
+942,7
@@
static void http_io(IOCHAN i, int event)
fflush(hc->http_server->record_file);
}
#endif
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");
if (!(hc->request = http_parse_request(hc, &hc->iqueue, reqlen)))
{
yaz_log(YLOG_WARN, "Failed to parse request");
@@
-941,7
+950,9
@@
static void http_io(IOCHAN i, int event)
return;
}
hc->response = 0;
return;
}
hc->response = 0;
- yaz_log(YLOG_LOG, "Request: %s %s%s%s", hc->request->method,
+ yaz_log(YLOG_LOG, "Request: - %d %s %s%s%s",
+ iochan_getfd(i),
+ hc->request->method,
hc->request->path,
*hc->request->search ? "?" : "",
hc->request->search);
hc->request->path,
*hc->request->search ? "?" : "",
hc->request->search);
@@
-1121,6
+1132,7
@@
static void http_channel_destroy(IOCHAN i)
http_buf_destroy_queue(s->http_server, s->proxy->oqueue);
xfree(s->proxy);
}
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);
http_buf_destroy_queue(s->http_server, s->iqueue);
http_buf_destroy_queue(s->http_server, s->oqueue);
http_fire_observers(s);
@@
-1168,6
+1180,7
@@
static struct http_channel *http_channel_create(http_server_t hs,
}
strcpy(r->addr, addr);
r->observers = 0;
}
strcpy(r->addr, addr);
r->observers = 0;
+ r->yt = yaz_timing_create();
return r;
}
return r;
}
@@
-1176,21
+1189,21
@@
static struct http_channel *http_channel_create(http_server_t hs,
static void http_accept(IOCHAN i, int event)
{
char host[256];
static void http_accept(IOCHAN i, int event)
{
char host[256];
- struct sockaddr addr;
+ struct sockaddr_storage addr;
int fd = iochan_getfd(i);
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);
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;
}
{
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);
{
yaz_log(YLOG_WARN|YLOG_ERRNO, "getnameinfo");
CLOSESOCKET(s);