]> err.no Git - varnish/commitdiff
Add TCP_blocking() and TCP_nonblocking() and use them instead of
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 26 May 2008 08:38:00 +0000 (08:38 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 26 May 2008 08:38:00 +0000 (08:38 +0000)
fondling fcntl(2) directly.

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2637 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache_fetch.c
varnish-cache/bin/varnishd/common.h
varnish-cache/bin/varnishd/tcp.c

index 34a2ff5263f3e98d377fe4dc698a752bc6efd54c..ac523c8b3207b4d28dca4423f750fc34d18e688b 100644 (file)
@@ -65,9 +65,7 @@ fetch_straight(struct sess *sp, struct http_conn *htc, const char *b)
        sp->obj->len = cl;
        p = st->ptr;
 
-       i = fcntl(htc->fd, F_GETFL);            /* XXX ? */
-       i &= ~O_NONBLOCK;
-       i = fcntl(htc->fd, F_SETFL, i);
+       TCP_blocking(htc->fd);
 
        while (cl > 0) {
                i = HTC_Read(htc, p, cl);
@@ -211,9 +209,7 @@ fetch_eof(struct sess *sp, struct http_conn *htc)
        struct storage *st;
        unsigned v;
 
-       i = fcntl(htc->fd, F_GETFL);            /* XXX ? */
-       i &= ~O_NONBLOCK;
-       i = fcntl(htc->fd, F_SETFL, i);
+       TCP_blocking(htc->fd);
 
        p = NULL;
        v = 0;
index 5b21dad592649fac394baedf3d6a8cdd684e646a..62dcecd92c5df3d12fc2280bfc195b4e1cb4c1b0 100644 (file)
@@ -44,5 +44,7 @@ extern struct varnish_stats *VSL_stats;
 void TCP_name(const struct sockaddr *addr, unsigned l, char *abuf, unsigned alen, char *pbuf, unsigned plen);
 void TCP_myname(int sock, char *abuf, unsigned alen, char *pbuf, unsigned plen);
 int TCP_filter_http(int sock);
+void TCP_blocking(int sock);
+void TCP_nonblocking(int sock);
 
 #define TRUST_ME(ptr)  ((void*)(uintptr_t)(ptr))
index cb02303581147b3e89d6ac8f0e32a377a6c4007b..0d1d7d628b1b07a2d87f405da8dbd552e5599470 100644 (file)
@@ -37,6 +37,7 @@
 #include <netinet/in.h>
 
 #include <errno.h>
+#include <fcntl.h>
 #include <netdb.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -110,3 +111,29 @@ TCP_filter_http(int sock)
        return (0);
 #endif
 }
+
+/*--------------------------------------------------------------------*/
+
+void
+TCP_blocking(int sock)
+{
+       int i;
+
+       i = fcntl(sock, F_GETFL);
+       assert(i != -1);
+       i &= ~O_NONBLOCK;
+       i = fcntl(sock, F_SETFL, i);
+       assert(i != -1);
+}
+
+void
+TCP_nonblocking(int sock)
+{
+       int i;
+
+       i = fcntl(sock, F_GETFL);
+       assert(i != -1);
+       i |= O_NONBLOCK;
+       i = fcntl(sock, F_SETFL, i);
+       assert(i != -1);
+}