Changeset 64484 in vbox for trunk/src/VBox
- Timestamp:
- Oct 31, 2016 12:08:06 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/lwip-new/src/core/tcp_in.c
r63055 r64484 1043 1043 tcp_receive(pcb); 1044 1044 if (recv_flags & TF_GOT_FIN) { 1045 if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { 1045 if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && 1046 pcb->unsent == NULL) { 1046 1047 LWIP_DEBUGF(TCP_DEBUG, 1047 1048 ("TCP connection closed: FIN_WAIT_1 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); … … 1055 1056 pcb->state = CLOSING; 1056 1057 } 1057 } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { 1058 } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && 1059 pcb->unsent == NULL) { 1058 1060 pcb->state = FIN_WAIT_2; 1059 1061 } … … 1072 1074 case CLOSING: 1073 1075 tcp_receive(pcb); 1074 if (flags & TCP_ACK && ackno == pcb->snd_nxt ) {1076 if (flags & TCP_ACK && ackno == pcb->snd_nxt && pcb->unsent == NULL) { 1075 1077 LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: CLOSING %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); 1076 1078 tcp_pcb_purge(pcb); … … 1082 1084 case LAST_ACK: 1083 1085 tcp_receive(pcb); 1084 if (flags & TCP_ACK && ackno == pcb->snd_nxt ) {1086 if (flags & TCP_ACK && ackno == pcb->snd_nxt && pcb->unsent == NULL) { 1085 1087 LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: LAST_ACK %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); 1086 1088 /* bugfix #21699: don't set pcb->state to CLOSED here or we risk leaking segments */
Note:
See TracChangeset
for help on using the changeset viewer.