The python3-flask template (and likely the python2) is bitten by this Flask issue: https://github.com/pallets/flask/issues/2229 Flask / Werkzeug have a bug handling chunked transfer encoding--and perhaps any other time that Content-Length is not set--when combined with WSGI. When the request is forwarded through the `of-watchdog` process, `http.NewRequest` is given a reference to the body `io.ReadCloser`. Since that is a stream, the outbound request will always use chunked transfer encoding and no Content-Length. This could be avoided by changing `of-watchdog` to read the whole body into a buffer and then send it unchunked; but it would make more sense, I think, either to upgrade to a fixed version of Flask/Werkzeug (assuming there is one) or revert back to Flask's development server (`app.run(...)`) rather than using gevent's WSGIServer, as the built-in server does not seem to be affected. The following examples are using the same `of-watchdog` and function code. The only difference is that the first one is using Flask with `WSGIServer` and the second is using the Flask built-in server. # WSGI server ``` $ curl -i -XPOST -d "rawdsddddddddddddddddddddddd" 'http://127.0.0.1:9999/' HTTP/1.1 200 OK Content-Length: 0 Content-Type: text/html; charset=utf-8 Date: Wed, 25 Jul 2018 23:33:36 GMT ``` # Flask's server ``` $ curl -i -XPOST -d "rawdsddddddddddddddddddddddd" 'http://127.0.0.1:9999/' HTTP/1.1 200 OK Content-Length: 28 Content-Type: text/html; charset=utf-8 Date: Wed, 25 Jul 2018 23:31:29 GMT Server: Werkzeug/0.14.1 Python/3.6.5 rawdsddddddddddddddddddddddd ```