Reverted invalid fix for invalid bug #34360 done yesterday...

This commit is contained in:
Simon Goldschmidt 2011-09-23 19:26:29 +02:00
parent 1d125f55ba
commit 98274d2145
2 changed files with 7 additions and 12 deletions

View File

@ -69,10 +69,6 @@ HISTORY
* pbuf.h, tcp.c, tcp_in.c: fixed bug #33871: rejecting TCP_EVENT_RECV() for * pbuf.h, tcp.c, tcp_in.c: fixed bug #33871: rejecting TCP_EVENT_RECV() for
the last packet including FIN can lose data the last packet including FIN can lose data
2011-09-22: Simon Goldschmidt
* tcp.c: fixed bug #34360 tcp_shutdown: RST on unacked is not send when
shutting down both rx AND tx
2011-09-22: Simon Goldschmidt 2011-09-22: Simon Goldschmidt
* tcp_impl.h: fixed bug #34355: nagle does not take snd_buf/snd_queuelen into * tcp_impl.h: fixed bug #34355: nagle does not take snd_buf/snd_queuelen into
account account

View File

@ -305,7 +305,12 @@ tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx)
return ERR_CONN; return ERR_CONN;
} }
if (shut_rx) { if (shut_rx) {
/* shut down the receive side: set a flag not to receive any more data */ /* shut down the receive side: free buffered data... */
if (pcb->refused_data != NULL) {
pbuf_free(pcb->refused_data);
pcb->refused_data = NULL;
}
/* ... and set a flag not to receive any more data */
pcb->flags |= TF_RXCLOSED; pcb->flags |= TF_RXCLOSED;
} }
if (shut_tx) { if (shut_tx) {
@ -315,18 +320,12 @@ tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx)
case SYN_RCVD: case SYN_RCVD:
case ESTABLISHED: case ESTABLISHED:
case CLOSE_WAIT: case CLOSE_WAIT:
/* if shut_tx AND shut_rx, send RST if we have unacked data */ return tcp_close_shutdown(pcb, 0);
return tcp_close_shutdown(pcb, (u8_t)shut_rx);
default: default:
/* don't shut down other states */ /* don't shut down other states */
break; break;
} }
} }
if (shut_rx && (pcb->refused_data != NULL)) {
/* shut down the receive side: free buffered data if we come here */
pbuf_free(pcb->refused_data);
pcb->refused_data = NULL;
}
/* @todo: return another err_t if not in correct state or already shut? */ /* @todo: return another err_t if not in correct state or already shut? */
return ERR_OK; return ERR_OK;
} }