]> granicus.if.org Git - libevent/commitdiff
introduce is connection close
authorNiels Provos <provos@gmail.com>
Sat, 18 Nov 2006 02:10:25 +0000 (02:10 +0000)
committerNiels Provos <provos@gmail.com>
Sat, 18 Nov 2006 02:10:25 +0000 (02:10 +0000)
svn:r260

http.c

diff --git a/http.c b/http.c
index d69aff2b1f529fb46a7cd9c18b1b5f8572bfd376..1ca1d060ad267c9f980999a9d17f0a590bad220e 100644 (file)
--- a/http.c
+++ b/http.c
@@ -1125,6 +1125,13 @@ evhttp_start_read(struct evhttp_connection *evcon)
        event_add(&evcon->ev, &tv);
 }
 
+static int
+evhttp_is_connection_close(struct evkeyval* headers)
+{
+       const char *connection = evhttp_find_header(headers, "Connection");
+       return (connection != NULL && strcasecmp(connection, "close") == 0);
+}
+
 void
 evhttp_send_done(struct evhttp_connection *evcon, void *arg)
 {
@@ -1132,9 +1139,8 @@ evhttp_send_done(struct evhttp_connection *evcon, void *arg)
        TAILQ_REMOVE(&evcon->requests, req, next);
 
        if (req->flags & EVHTTP_REQ_OWN_CONNECTION) {
-               const char *connection =
-                   evhttp_find_header(req->output_headers, "Connection");
-               if (connection == NULL || strcasecmp(connection, "close")) {
+               if (!evhttp_is_connection_close(req->input_headers) &&
+                   !evhttp_is_connection_close(req->output_headers)) {
                        event_warnx("%s: persistent connection not supported",
                            __func__);
                }