]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lwip.git/commitdiff
tcp_abort/tcp_abandon: don't send RST if pcb->state is CLOSED
authorgoldsimon <goldsimon@gmx.de>
Sun, 25 Mar 2012 15:19:46 +0000 (17:19 +0200)
committergoldsimon <goldsimon@gmx.de>
Sun, 25 Mar 2012 15:19:46 +0000 (17:19 +0200)
src/core/tcp.c

index 3bcd41a366dc419b660024a2fe7fdacd87709763..05e7c7d858aadd220cc618bf3858a29f49905fbf 100644 (file)
@@ -375,6 +375,7 @@ tcp_abandon(struct tcp_pcb *pcb, int reset)
     tcp_pcb_remove(&tcp_tw_pcbs, pcb);
     memp_free(MEMP_TCP_PCB, pcb);
   } else {
+    int send_rst = reset && (pcb->state != CLOSED);
     seqno = pcb->snd_nxt;
     ackno = pcb->rcv_nxt;
 #if LWIP_CALLBACK_API
@@ -393,7 +394,7 @@ tcp_abandon(struct tcp_pcb *pcb, int reset)
       tcp_segs_free(pcb->ooseq);
     }
 #endif /* TCP_QUEUE_OOSEQ */
-    if (reset) {
+    if (send_rst) {
       LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_abandon: sending RST\n"));
       tcp_rst(seqno, ackno, &pcb->local_ip, &pcb->remote_ip, pcb->local_port, pcb->remote_port, PCB_ISIPV6(pcb));
     }