diff --git a/sys/src/9/ip/esp.c b/sys/src/9/ip/esp.c index 9023e08a5..75c48a1ff 100644 --- a/sys/src/9/ip/esp.c +++ b/sys/src/9/ip/esp.c @@ -595,7 +595,7 @@ espadvise(Proto *esp, Block *bp, char *msg) qlock(esp); c = convlookup(esp, vers.spi); - if(c != nil) { + if(c != nil && !c->ignoreadvice) { qhangup(c->rq, msg); qhangup(c->wq, msg); } diff --git a/sys/src/9/ip/icmp.c b/sys/src/9/ip/icmp.c index d1652147a..fc32696b6 100644 --- a/sys/src/9/ip/icmp.c +++ b/sys/src/9/ip/icmp.c @@ -449,6 +449,8 @@ icmpadvise(Proto *icmp, Block *bp, char *msg) s = *c; if(s->lport == recid) if(ipcmp(s->raddr, dst) == 0){ + if(s->ignoreadvice) + break; qhangup(s->rq, msg); qhangup(s->wq, msg); break; diff --git a/sys/src/9/ip/icmp6.c b/sys/src/9/ip/icmp6.c index 75419f918..bade6b4de 100644 --- a/sys/src/9/ip/icmp6.c +++ b/sys/src/9/ip/icmp6.c @@ -224,6 +224,8 @@ icmpadvise6(Proto *icmp, Block *bp, char *msg) for(c = icmp->conv; *c; c++) { s = *c; if(s->lport == recid && ipcmp(s->raddr, p->dst) == 0){ + if(s->ignoreadvice) + break; qhangup(s->rq, msg); qhangup(s->wq, msg); break; diff --git a/sys/src/9/ip/il.c b/sys/src/9/ip/il.c index 478fd4101..2549fa49e 100644 --- a/sys/src/9/ip/il.c +++ b/sys/src/9/ip/il.c @@ -1334,6 +1334,8 @@ iladvise(Proto *il, Block *bp, char *msg) if(s->lport == psource) if(ipcmp(s->laddr, source) == 0) if(ipcmp(s->raddr, dest) == 0){ + if(s->ignoreadvice) + break; qunlock(il); ic = (Ilcb*)s->ptcl; switch(ic->state){ diff --git a/sys/src/9/ip/rudp.c b/sys/src/9/ip/rudp.c index 8f3de5e6d..ff17c257d 100644 --- a/sys/src/9/ip/rudp.c +++ b/sys/src/9/ip/rudp.c @@ -648,6 +648,8 @@ rudpadvise(Proto *rudp, Block *bp, char *msg) if(s->lport == psource) if(ipcmp(s->raddr, dest) == 0) if(ipcmp(s->laddr, source) == 0){ + if(s->ignoreadvice) + break; qhangup(s->rq, msg); qhangup(s->wq, msg); break; diff --git a/sys/src/9/ip/tcp.c b/sys/src/9/ip/tcp.c index f19391a68..2fb8acd85 100644 --- a/sys/src/9/ip/tcp.c +++ b/sys/src/9/ip/tcp.c @@ -3254,6 +3254,8 @@ tcpadvise(Proto *tcp, Block *bp, char *msg) if(tcb->state != Closed) if(ipcmp(s->raddr, dest) == 0) if(ipcmp(s->laddr, source) == 0){ + if(s->ignoreadvice) + break; qlock(s); qunlock(tcp); switch(tcb->state){