From 8e011ec500e804e7b5af7da9e8bcf535c9cb74fe Mon Sep 17 00:00:00 2001 From: Olaf Bergmann Date: Fri, 22 Dec 2017 13:56:48 +0100 Subject: [PATCH] net.c: dynamically grow PDU size for TCP This change was provided by Jean-Claude Michelou to fix issue #123 [1]. It dynamically grows a partial TCP PDU during read. [1] https://github.com/obgm/libcoap/issues/123 --- src/net.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/net.c b/src/net.c index e28d342e..bebbf3a1 100644 --- a/src/net.c +++ b/src/net.c @@ -1160,6 +1160,10 @@ coap_read_session(coap_context_t *ctx, coap_session_t *session, coap_tick_t now) bytes_read = -1; break; } + if (session->partial_pdu->alloc_size < size && !coap_pdu_resize(session->partial_pdu, size)) { + bytes_read = -1; + break; + } session->partial_pdu->hdr_size = (uint8_t)hdr_size; session->partial_pdu->used_size = size; memcpy(session->partial_pdu->token - hdr_size, session->read_header, hdr_size);