diff --git a/CHANGELOG b/CHANGELOG index b5a1280d..0e7f084e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -24,6 +24,10 @@ HISTORY ++ 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 * opt.h: fixed bug #31809 LWIP_EVENT_API in opts.h is inconsistent compared to other options diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c index 0fe03ab7..ff36e878 100644 --- a/src/core/tcp_in.c +++ b/src/core/tcp_in.c @@ -297,6 +297,10 @@ tcp_input(struct pbuf *p, struct netif *inp) recv_data = NULL; recv_flags = 0; + if (flags & TCP_PSH) { + p->flags |= PBUF_FLAG_PUSH; + } + /* If there is data which was previously "refused" by upper layer */ if (pcb->refused_data != NULL) { /* Notify again application with data previously received. */ @@ -354,9 +358,6 @@ tcp_input(struct pbuf *p, struct netif *inp) tcp_abort(pcb); goto aborted; } - if (flags & TCP_PSH) { - recv_data->flags |= PBUF_FLAG_PUSH; - } /* Notify application that data has been received. */ TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);