diff options
author | 2015-09-11 19:31:38 +0000 | |
---|---|---|
committer | 2015-09-11 19:31:38 +0000 | |
commit | 3affe5a953e36ee15cbe89b647daf6908021f0d6 (patch) | |
tree | b7b1e74d618b61ced1d2aa7b9d04a982e8f8b093 | |
parent | Document rtref(9). (diff) | |
download | wireguard-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.c | 12 |
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 |