# Changelog - 2016

::: note
::: title
Note
:::

Please see `news`{.interpreted-text role="doc"} for the latest changes
:::

## 19.6.0 / 2016/05/21

### Core & Logging

-   improvement of the binary upgrade behaviour using USR2: remove file
    locking (`1270`{.interpreted-text role="issue"})
-   add the `--capture-output` setting to capture stdout/stderr tot the
    log file (`1271`{.interpreted-text role="issue"})
-   Allow disabling `sendfile()` via the `SENDFILE` environment variable
    (`1252`{.interpreted-text role="issue"})
-   fix reload under pycharm (`1129`{.interpreted-text role="issue"})

### Workers

-   fix: make sure to remove the signal from the worker pipe
    (`1269`{.interpreted-text role="issue"})
-   fix: **gthread** worker, handle removed socket in the select loop
    (`1258`{.interpreted-text role="issue"})

## 19.5.0 / 2016/05/10

### Core

-   fix: Ensure response to HEAD request won\'t have message body
-   fix: lock domain socket and remove on last arbiter exit
    (`1220`{.interpreted-text role="issue"})
-   improvement: use EnvironmentError instead of socket.error
    (`939`{.interpreted-text role="issue"})
-   add: new `FORWARDED_ALLOW_IPS` environment variable
    (`1205`{.interpreted-text role="issue"})
-   fix: infinite recursion when destroying sockets
    (`1219`{.interpreted-text role="issue"})
-   fix: close sockets on shutdown (`922`{.interpreted-text
    role="issue"})
-   fix: clean up sys.exc_info calls to drop circular refs
    (`1228`{.interpreted-text role="issue"})
-   fix: do post_worker_init after load_wsgi (`1248`{.interpreted-text
    role="issue"})

### Workers

-   fix access logging in gaiohttp worker (`1193`{.interpreted-text
    role="issue"})
-   eventlet: handle QUIT in a new coroutine (`1217`{.interpreted-text
    role="issue"})
-   gevent: remove obsolete exception clauses in run
    (`1218`{.interpreted-text role="issue"})
-   tornado: fix extra \"Server\" response header
    (`1246`{.interpreted-text role="issue"})
-   fix: unblock the wait loop under python 3.5 in sync worker
    (`1256`{.interpreted-text role="issue"})

### Logging

-   fix: log message for listener reloading (`1181`{.interpreted-text
    role="issue"})
-   Let logging module handle traceback printing
    (`1201`{.interpreted-text role="issue"})
-   improvement: Allow configuring logger_class with statsd_host
    (`1188`{.interpreted-text role="issue"})
-   fix: traceback formatting (`1235`{.interpreted-text role="issue"})
-   fix: print error logs on stderr and access logs on stdout
    (`1184`{.interpreted-text role="issue"})

### Documentation

-   Simplify installation instructions in gunicorn.org
    (`1072`{.interpreted-text role="issue"})
-   Fix URL and default worker type in example_config
    (`1209`{.interpreted-text role="issue"})
-   update django doc url to 1.8 lts (`1213`{.interpreted-text
    role="issue"})
-   fix: miscellaneous wording corrections (`1216`{.interpreted-text
    role="issue"})
-   Add PSF License Agreement of selectors.py to NOTICE (:issue:
    [1226]{.title-ref})
-   document LOGGING overriding (`1051`{.interpreted-text role="issue"})
-   put a note that error logs are only errors from Gunicorn
    (`1124`{.interpreted-text role="issue"})
-   add a note about the requirements of the threads workers under
    python 2.x (`1200`{.interpreted-text role="issue"})
-   add access_log_format to config example (`1251`{.interpreted-text
    role="issue"})

### Tests

-   Use more pytest.raises() in test_http.py

## 19.4.5 / 2016/01/05

-   fix: NameError fileno in gunicorn.http.wsgi
    (`1178`{.interpreted-text role="issue"})

## 19.4.4 / 2016/01/04

-   fix: check if a fileobject can be used with sendfile(2)
    (`1174`{.interpreted-text role="issue"})
-   doc: be more descriptive in errorlog option
    (`1173`{.interpreted-text role="issue"})