projects
/
pazpar2-moved-to-github.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
6b503d8
)
Refactor http_io to not use iochan_setevent
author
Adam Dickmeiss
<adam@indexdata.dk>
Tue, 30 Mar 2010 07:27:56 +0000
(09:27 +0200)
committer
Adam Dickmeiss
<adam@indexdata.dk>
Tue, 30 Mar 2010 07:27:56 +0000
(09:27 +0200)
src/http.c
patch
|
blob
|
history
diff --git
a/src/http.c
b/src/http.c
index
8321bb3
..
aec3593
100644
(file)
--- a/
src/http.c
+++ b/
src/http.c
@@
-878,13
+878,13
@@
static void http_error(struct http_channel *hc, int no, const char *msg)
static void http_io(IOCHAN i, int event)
{
struct http_channel *hc = iochan_getdata(i);
static void http_io(IOCHAN i, int event)
{
struct http_channel *hc = iochan_getdata(i);
-
- switch (event)
+ while (event)
{
{
- int res, reqlen;
- struct http_buf *htbuf;
-
- case EVENT_INPUT:
+ if (event == EVENT_INPUT)
+ {
+ int res, reqlen;
+ struct http_buf *htbuf;
+
htbuf = http_buf_create(hc->http_server);
res = recv(iochan_getfd(i), htbuf->buf, HTTP_BUF_SIZE -1, 0);
if (res == -1 && errno == EAGAIN)
htbuf = http_buf_create(hc->http_server);
res = recv(iochan_getfd(i), htbuf->buf, HTTP_BUF_SIZE -1, 0);
if (res == -1 && errno == EAGAIN)
@@
-933,12
+933,16
@@
static void http_io(IOCHAN i, int event)
http_command(hc);
}
}
http_command(hc);
}
}
- break;
- case EVENT_OUTPUT:
+ }
+ else if (event == EVENT_OUTPUT)
+ {
+ event = 0;
if (hc->oqueue)
{
struct http_buf *wb = hc->oqueue;
if (hc->oqueue)
{
struct http_buf *wb = hc->oqueue;
- res = send(iochan_getfd(hc->iochan), wb->buf + wb->offset, wb->len, 0);
+ int res;
+ res = send(iochan_getfd(hc->iochan),
+ wb->buf + wb->offset, wb->len, 0);
if (res <= 0)
{
yaz_log(YLOG_WARN|YLOG_ERRNO, "write");
if (res <= 0)
{
yaz_log(YLOG_WARN|YLOG_ERRNO, "write");
@@
-955,7
+959,8
@@
static void http_io(IOCHAN i, int event)
wb->len -= res;
wb->offset += res;
}
wb->len -= res;
wb->offset += res;
}
- if (!hc->oqueue) {
+ if (!hc->oqueue)
+ {
if (!hc->keep_alive)
{
http_channel_destroy(i);
if (!hc->keep_alive)
{
http_channel_destroy(i);
@@
-965,17
+970,19
@@
static void http_io(IOCHAN i, int event)
{
iochan_clearflag(i, EVENT_OUTPUT);
if (hc->iqueue)
{
iochan_clearflag(i, EVENT_OUTPUT);
if (hc->iqueue)
- iochan_setevent(hc->iochan, EVENT_INPUT);
+ event = EVENT_INPUT;
}
}
}
}
}
}
-
if (!hc->oqueue && hc->proxy && !hc->proxy->iochan)
http_channel_destroy(i); // Server closed; we're done
if (!hc->oqueue && hc->proxy && !hc->proxy->iochan)
http_channel_destroy(i); // Server closed; we're done
- break;
- default:
+ }
+ else
+ {
yaz_log(YLOG_WARN, "Unexpected event on connection");
http_channel_destroy(i);
yaz_log(YLOG_WARN, "Unexpected event on connection");
http_channel_destroy(i);
+ event = 0;
+ }
}
}
}
}