aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/drivers/common/inet_drv.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2011-12-07 14:20:55 +0100
committerSverker Eriksson <[email protected]>2011-12-07 14:20:55 +0100
commitf7241e210c333b088210a138c0880aa93d1f7780 (patch)
treea8c4620af57b908468881864b48866f5c71500c5 /erts/emulator/drivers/common/inet_drv.c
parent2e5639155e153ba4869d7671d1a7becd5e07dc1a (diff)
parentdc5f7190f16cf4552db74fba3f4e0f2d654e2594 (diff)
downloadotp-f7241e210c333b088210a138c0880aa93d1f7780.tar.gz
otp-f7241e210c333b088210a138c0880aa93d1f7780.tar.bz2
otp-f7241e210c333b088210a138c0880aa93d1f7780.zip
Merge branch 'sverk/packet_size-http/OTP-9389'
* sverk/packet_size-http/OTP-9389: erts: Remove truncation of http packet parsing and return error instead honor packet_size for http packet parsing to fix OTP-9389
Diffstat (limited to 'erts/emulator/drivers/common/inet_drv.c')
-rw-r--r--erts/emulator/drivers/common/inet_drv.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c
index e0d869f328..45089dcc2f 100644
--- a/erts/emulator/drivers/common/inet_drv.c
+++ b/erts/emulator/drivers/common/inet_drv.c
@@ -8729,8 +8729,15 @@ static int tcp_remain(tcp_descriptor* desc, int* len)
else if (tlen == 0) { /* need unknown more */
*len = 0;
if (nsz == 0) {
- if (nfill == n)
- goto error;
+ if (nfill == n) {
+ if (desc->inet.psize != 0 && desc->inet.psize > nfill) {
+ if (tcp_expand_buffer(desc, desc->inet.psize) < 0)
+ return -1;
+ return desc->inet.psize;
+ }
+ else
+ goto error;
+ }
DEBUGF((" => restart more=%d\r\n", nfill - n));
return nfill - n;
}