fixed bug #33952 PUSH flag in incoming packet is lost when packet is aggregated and sent to application

This commit is contained in:
Simon Goldschmidt 2011-09-03 21:57:26 +02:00 committed by goldsimon
parent 68f8966f74
commit 9a1eeeea67
2 changed files with 8 additions and 3 deletions

View File

@ -24,6 +24,10 @@ HISTORY
++ Bugfixes: ++ Bugfixes:
2011-09-03: Simon Goldschmidt
* tcp_in.c: fixed bug #33952 PUSH flag in incoming packet is lost when packet
is aggregated and sent to application
2011-09-01: Simon Goldschmidt 2011-09-01: Simon Goldschmidt
* opt.h: fixed bug #31809 LWIP_EVENT_API in opts.h is inconsistent compared * opt.h: fixed bug #31809 LWIP_EVENT_API in opts.h is inconsistent compared
to other options to other options

View File

@ -297,6 +297,10 @@ tcp_input(struct pbuf *p, struct netif *inp)
recv_data = NULL; recv_data = NULL;
recv_flags = 0; recv_flags = 0;
if (flags & TCP_PSH) {
p->flags |= PBUF_FLAG_PUSH;
}
/* If there is data which was previously "refused" by upper layer */ /* If there is data which was previously "refused" by upper layer */
if (pcb->refused_data != NULL) { if (pcb->refused_data != NULL) {
/* Notify again application with data previously received. */ /* Notify again application with data previously received. */
@ -354,9 +358,6 @@ tcp_input(struct pbuf *p, struct netif *inp)
tcp_abort(pcb); tcp_abort(pcb);
goto aborted; goto aborted;
} }
if (flags & TCP_PSH) {
recv_data->flags |= PBUF_FLAG_PUSH;
}
/* Notify application that data has been received. */ /* Notify application that data has been received. */
TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err); TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);