summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2011-06-17 14:36:51 +0000
committerjsg <jsg@openbsd.org>2011-06-17 14:36:51 +0000
commit76ccee27b41da25006db1276f02901707d333a0f (patch)
tree89cbf2fecd3133efacb548ded4f7d3aeef958934
parentadd acpitoshiba; ok pirofti (diff)
downloadwireguard-openbsd-76ccee27b41da25006db1276f02901707d333a0f.tar.xz
wireguard-openbsd-76ccee27b41da25006db1276f02901707d333a0f.zip
don't leak fds in failure path (ie when hosts are down)
from Martin Matuska in PR 6624 ok phessler@
-rw-r--r--usr.sbin/relayd/check_tcp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/usr.sbin/relayd/check_tcp.c b/usr.sbin/relayd/check_tcp.c
index d960f0aa6a7..49f7bb4f58f 100644
--- a/usr.sbin/relayd/check_tcp.c
+++ b/usr.sbin/relayd/check_tcp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: check_tcp.c,v 1.41 2011/05/19 08:56:49 reyk Exp $ */
+/* $OpenBSD: check_tcp.c,v 1.42 2011/06/17 14:36:51 jsg Exp $ */
/*
* Copyright (c) 2006 Pierre-Yves Ritschard <pyr@openbsd.org>
@@ -77,6 +77,8 @@ check_tcp(struct ctl_tcp_event *cte)
goto bad;
}
+ cte->s = s;
+
bzero(&lng, sizeof(lng));
if (setsockopt(s, SOL_SOCKET, SO_LINGER, &lng, sizeof(lng)) == -1)
goto bad;
@@ -100,7 +102,6 @@ check_tcp(struct ctl_tcp_event *cte)
cte->buf = NULL;
cte->host->up = HOST_UP;
- cte->s = s;
event_del(&cte->ev);
event_set(&cte->ev, s, EV_TIMEOUT|EV_WRITE, tcp_write, cte);
event_add(&cte->ev, &tv);