diff --git a/sys/src/9/ip/icmp.c b/sys/src/9/ip/icmp.c index 9dd5c9414..3f5a80e21 100644 --- a/sys/src/9/ip/icmp.c +++ b/sys/src/9/ip/icmp.c @@ -366,7 +366,7 @@ icmpiput(Proto *icmp, Ipifc*, Block *bp) case EchoRequest: if (iplen < n) bp = trimblock(bp, 0, iplen); - r = mkechoreply(bp); + r = mkechoreply(concatblock(bp)); ipriv->out[EchoReply]++; ipoput4(icmp->f, r, 0, MAXTTL, DFLTTOS, nil); break; diff --git a/sys/src/9/ip/icmp6.c b/sys/src/9/ip/icmp6.c index 458280b27..7335a3c5e 100644 --- a/sys/src/9/ip/icmp6.c +++ b/sys/src/9/ip/icmp6.c @@ -734,7 +734,7 @@ icmpiput6(Proto *icmp, Ipifc *ipifc, Block *bp) switch(p->type) { case EchoRequestV6: - r = mkechoreply6(bp, ipifc); + r = mkechoreply6(concatblock(bp), ipifc); if(r == nil) goto raise; ipriv->out[EchoReply]++; diff --git a/sys/src/9/ip/ip.c b/sys/src/9/ip/ip.c index 19aef70a4..40fc9380e 100644 --- a/sys/src/9/ip/ip.c +++ b/sys/src/9/ip/ip.c @@ -208,7 +208,6 @@ ipoput4(Fs *f, Block *bp, int gating, int ttl, int tos, Conv *c) eh->cksum[0] = 0; eh->cksum[1] = 0; hnputs(eh->cksum, ipcsum(&eh->vihl)); - assert(bp->next == nil); ifc->m->bwrite(ifc, bp, V4, gate); runlock(ifc); poperror();