[New-bugs-announce] [issue33067] http.client no longer sends HTTP request in one TCP package

Christian Heimes report at bugs.python.org
Tue Mar 13 08:06:43 EDT 2018


New submission from Christian Heimes <lists at cheimes.de>:

https://bugs.python.org/issue23302 changed how http.client sends request. endheaders() no longer sends header and message body in one TCP package if the total payload is smaller than TCP max segment size. https://github.com/python/cpython/blob/3.5/Lib/http/client.py#L934-L936 uses two send calls to send header and body. This causes very simple HTTP servers in embedded devices to fail.

Matthew Garrett noticed the bug, see https://twitter.com/mjg59/status/972985566387032064 / https://twitter.com/mjg59/status/973000950439817217

We should try to send requests as one TCP package again. TCP_CORK may do the trick. Or we should fix our custom implementation of send. It has multiple issues, e.g. a fixed buffer. The buffer size is suboptimal for small MTU and jumbo frames.

----------
components: Library (Lib)
keywords: 3.5regression
messages: 313743
nosy: benjamin.peterson, christian.heimes
priority: normal
severity: normal
status: open
title: http.client no longer sends HTTP request in one TCP package
type: behavior
versions: Python 3.6, Python 3.7, Python 3.8

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue33067>
_______________________________________


More information about the New-bugs-announce mailing list