]> err.no Git - varnish/commitdiff
Allow ENOENT on removing kqueue events, a close will have drained
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 2 Aug 2006 18:17:49 +0000 (18:17 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 2 Aug 2006 18:17:49 +0000 (18:17 +0000)
them already.

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

varnish-cache/bin/varnishd/cache_acceptor.c

index 272a1cff97994b000454885a4000ca1caf14c748..9d35285c911def1ecbbdeaf9300052c4ba64cc9f 100644 (file)
@@ -261,13 +261,18 @@ static void
 vca_kq_sess(struct sess *sp, int arm)
 {
        struct kevent ke[2];
+       int i;
 
        assert(arm == EV_ADD || arm == EV_DELETE);
        CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
        memset(ke, 0, sizeof ke);
        EV_SET(&ke[0], sp->fd, EVFILT_READ, arm, 0, 0, sp);
        EV_SET(&ke[1], sp->fd, EVFILT_TIMER, arm , 0, 5000, sp);
-       AZ(kevent(kq, ke, 2, NULL, 0, NULL));
+       i = kevent(kq, ke, 2, NULL, 0, NULL);
+       if (arm == EV_ADD)
+               assert(i == 0);
+       else
+               assert(i == 0 || errno == ENOENT);
 }
 
 static void