|
|
@ -75,13 +75,15 @@ serverRun(Server this) |
|
|
*/ |
|
|
*/ |
|
|
int size; |
|
|
int size; |
|
|
|
|
|
|
|
|
if (0 < (size=serverRead(this, i))) { |
|
|
|
|
|
|
|
|
if (0 >= (size=serverRead(this, i))) { |
|
|
|
|
|
serverCloseConn(this, i); |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
int j; |
|
|
int j; |
|
|
HttpRequestQueue queue = |
|
|
HttpRequestQueue queue = |
|
|
((HttpRequestParser)(this->conns)[fd].reader)->request_queue; |
|
|
((HttpRequestParser)(this->conns)[fd].reader)->request_queue; |
|
|
|
|
|
|
|
|
for (j=0; j<queue->nrequests; j++) { |
|
|
for (j=0; j<queue->nrequests; j++) { |
|
|
HttpRequest request = queue->requests[j]; |
|
|
|
|
|
HttpResponse response; |
|
|
HttpResponse response; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -90,20 +92,22 @@ serverRun(Server this) |
|
|
*/ |
|
|
*/ |
|
|
response = httpResponse404(); |
|
|
response = httpResponse404(); |
|
|
|
|
|
|
|
|
if (httpRequestHasKeepAlive(request)) { |
|
|
|
|
|
|
|
|
if (httpRequestHasKeepAlive(queue->requests[j])) { |
|
|
|
|
|
(this->conns)[fd].keep_alive = 1; |
|
|
httpResponseHeaderSet( |
|
|
httpResponseHeaderSet( |
|
|
response, |
|
|
response, |
|
|
"Connection", |
|
|
"Connection", |
|
|
"Keep-Alive"); |
|
|
"Keep-Alive"); |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
|
|
|
(this->conns)[fd].keep_alive = 0; |
|
|
httpResponseHeaderSet( |
|
|
httpResponseHeaderSet( |
|
|
response, |
|
|
response, |
|
|
"Connection", |
|
|
"Connection", |
|
|
"Close"); |
|
|
"Close"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
delete(&request); |
|
|
|
|
|
|
|
|
delete(&(queue->requests[j])); |
|
|
|
|
|
|
|
|
(this->conns)[fd].wbuf = calloc( |
|
|
(this->conns)[fd].wbuf = calloc( |
|
|
1, httpResponseSizeGet(response) + 1); |
|
|
1, httpResponseSizeGet(response) + 1); |
|
|
|