summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordlg <dlg@openbsd.org>2015-09-11 19:31:38 +0000
committerdlg <dlg@openbsd.org>2015-09-11 19:31:38 +0000
commit3affe5a953e36ee15cbe89b647daf6908021f0d6 (patch)
treeb7b1e74d618b61ced1d2aa7b9d04a982e8f8b093
parentDocument rtref(9). (diff)
downloadwireguard-openbsd-3affe5a953e36ee15cbe89b647daf6908021f0d6.tar.xz
wireguard-openbsd-3affe5a953e36ee15cbe89b647daf6908021f0d6.zip
if_put after if_get in igmp_joingroup
ok mpi@ claudio@
-rw-r--r--sys/netinet/igmp.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/netinet/igmp.c b/sys/netinet/igmp.c
index 0101349372f..1f35662e7a4 100644
--- a/sys/netinet/igmp.c
+++ b/sys/netinet/igmp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: igmp.c,v 1.51 2015/09/10 13:19:25 dlg Exp $ */
+/* $OpenBSD: igmp.c,v 1.52 2015/09/11 19:31:38 dlg Exp $ */
/* $NetBSD: igmp.c,v 1.15 1996/02/13 23:41:25 christos Exp $ */
/*
@@ -508,10 +508,9 @@ igmp_joingroup(struct in_multi *inm)
if (!IN_LOCAL_GROUP(inm->inm_addr.s_addr) &&
ifp && (ifp->if_flags & IFF_LOOPBACK) == 0) {
- if ((i = rti_fill(inm)) == -1) {
- splx(s);
- return;
- }
+ if ((i = rti_fill(inm)) == -1)
+ goto out;
+
igmp_sendpkt(inm, i, 0);
inm->inm_state = IGMP_DELAYING_MEMBER;
inm->inm_timer = IGMP_RANDOM_DELAY(
@@ -519,7 +518,10 @@ igmp_joingroup(struct in_multi *inm)
igmp_timers_are_running = 1;
} else
inm->inm_timer = 0;
+
+out:
splx(s);
+ if_put(ifp);
}
void