diff options
author | Sverker Eriksson <[email protected]> | 2011-12-07 14:20:55 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2011-12-07 14:20:55 +0100 |
commit | f7241e210c333b088210a138c0880aa93d1f7780 (patch) | |
tree | a8c4620af57b908468881864b48866f5c71500c5 /erts/emulator/drivers/common/inet_drv.c | |
parent | 2e5639155e153ba4869d7671d1a7becd5e07dc1a (diff) | |
parent | dc5f7190f16cf4552db74fba3f4e0f2d654e2594 (diff) | |
download | otp-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.c | 11 |
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; } |