@@ -125,10 +125,11 @@ func (f *icmpForwarder) reply4(id stack.TransportEndpointID, pkt *stack.PacketBu
125125 replyICMPHdr .SetCode (0 ) // EchoReply must have Code=0.
126126 replyICMPHdr .SetChecksum (^ checksum .Checksum (replyRef , 0 ))
127127
128- replyPkt : = stack .NewPacketBuffer (stack.PacketBufferOptions {
128+ var replyPkt * stack. PacketBuffer = stack .NewPacketBuffer (stack.PacketBufferOptions {
129129 ReserveHeaderBytes : int (route .MaxHeaderLength ()),
130130 Payload : buffer .MakeWithView (replyBuf ),
131131 })
132+ defer replyPkt .DecRef ()
132133
133134 log .D ("icmp: v4: %s: ok type %v/%v sz[%d] from %v <= %v" ,
134135 f .o , replyICMPHdr .Type (), replyICMPHdr .Code (), len (replyICMPHdr ), src , dst )
@@ -503,14 +504,14 @@ func l4l7(pkt *stack.PacketBuffer, sz uint32) ([]byte, error) {
503504}
504505
505506func l3l4 (pkt * stack.PacketBuffer , sz int64 ) (b buffer.Buffer , err error ) {
506- l3 := pkt .NetworkHeader ().View ()
507- l4 := pkt .TransportHeader ().View ()
508- combined := buffer .MakeWithView (l3 )
509- if err = combined .Append (l4 ); err == nil {
510- payload := pkt .Data ().ToBuffer ()
511- combined .Merge (& payload )
512- combined .Truncate (sz )
513- b = combined
514- }
515- return
507+ l3 := pkt .NetworkHeader ().View ()
508+ l4 := pkt .TransportHeader ().View ()
509+ combined := buffer .MakeWithView (l3 )
510+ if err = combined .Append (l4 ); err == nil {
511+ payload := pkt .Data ().ToBuffer ()
512+ combined .Merge (& payload )
513+ combined .Truncate (sz )
514+ b = combined
515+ }
516+ return
516517}
0 commit comments