152 Commits

Author SHA1 Message Date
Konstantin vz'One Enchant
927fb2ba02 Prevent removal unix socket for reuse_port (#1887)
If you have two (or more) instances of gunicorn that use `reuse-port`
and bind to single unix socket all work until one of gunicorn will
stopped. Because the first stopped removes unix socket file and other
instances can't longer process requests.
2018-10-02 13:25:35 +02:00
Randall Leeds
e179dc2575 Support str and bytes for UNIX socket addresses (#1882)
Some systems report UNIX socket addresses as bytes while others will
report it as a unicode string type. This patch improves socket type
detection code to support both.

Fix #1861
2018-09-24 08:57:53 +02:00
Hugo
e974f30517 Drop support for Python 2
Co-Authored-By: Dustin Ingram <di@users.noreply.github.com>
Co-Authored-By: Berker Peksag <berker.peksag@gmail.com>
2018-08-01 15:31:17 +03:00
Hugo
78208c8c32 Drop support for EOL Python 3.2 and 3.3 (#1839) 2018-07-29 14:07:36 +03:00
Diego Oliveira
43e31c366b Fix gaiohttp worker 2018-05-26 10:42:15 -03:00
Yun Xu
0af5641117 fixing zero bytes case in atoms access log 2018-05-18 13:15:03 -07:00
Berker Peksag
473ac62a2b Revert "Add test and update documentation"
This reverts commit eab1256052d7446359fb6f65279f9bebd18fafd4.
2018-05-06 18:10:53 +03:00
Berker Peksag
eab1256052 Add test and update documentation 2018-05-06 18:05:54 +03:00
Jacob Eiting
f12ef22281 Handle UnicodeDecodeError in _get_user() (#1684)
Fixes #1683
2018-01-18 04:29:25 +03:00
Berker Peksag
76eaa0805b Fix various warnings and errors reported by pylint 2018-01-11 09:59:31 +03:00
Randall Leeds
b07532be75 Forbid contradictory secure scheme headers
When a request specifies contradictory secure scheme headers, raise a
parse error.
2018-01-10 12:10:35 -08:00
YuppY
5953148573 Do not strip leading slash from path (#1511)
Fixes #1512
2017-12-28 11:32:47 +03:00
Hasan Ramezani
70fd6193f6 Add some tests for to_bytestring util 2017-12-11 22:50:06 +03:30
Juan Julián Merelo Guervós
6ba2ebe545 Make "failed to find application" more informative (#1648)
Co-Authored-By: Luis Liñán Villafranca <luislivilla@gmail.com>

Fixes #1647
2017-11-24 10:42:03 +03:00
Hasan Ramezani
90b7daebb6 Fix invalid auto_int value error when --umask=0 passed (#1632)
Fixes #1622
2017-10-28 10:48:23 +03:00
Hasan Ramezani
595ca263dd Add tests for util.{http_date,is_ipv6,warn} (#1630) 2017-10-22 21:20:19 +03:00
Hasan Ramezani
0ceb00e4ad Improve test coverage of util.parse_address() (#1629) 2017-10-22 19:55:44 +03:00
Hasan Ramezani
81efa40da7 Improve parsing of 'unix://' addresses in parse_address (#1623) 2017-10-16 09:44:00 +03:00
Oliver Bristow
6a2a8b3298 Fix #1576 - config file/module in GUNICORN_CMD_ARGS 2017-09-16 11:41:57 +01:00
Raphaël Slinckx
15e901a5e5 http/message: Split request line as bytes to avoid splitting on 0x0A. Fixes #1577 2017-08-25 10:50:34 +02:00
Raphaël Slinckx
ccfb29871c tests: Fix send_bytes for testing requests 2017-08-25 10:44:00 +02:00
Berker Peksag
2b7b63ae58 Test that os.kill() is called 2017-07-12 18:07:16 +03:00
Berker Peksag
b64c7fa305 Add # noqa to a false-positive for unused-import warning 2017-07-12 18:07:16 +03:00
Benno Rice
a4461ba158 RequestParser takes two parameters. 2017-07-12 16:17:50 +03:00
Benno Rice
032271a030 Empty sequences are false, there's no need to check the len. 2017-07-12 16:15:42 +03:00
Berker Peksag
70947bb96a Skip test if WSGIServerHttpProtocol isn't available 2017-04-15 00:55:13 +03:00
Hasan Ramezni
31fed6b470 add tests for umask config. 2017-02-19 13:33:47 +03:30
Mark Adams
bc20bea7d9 Add support for --reload-engine
Currently, gunicorn automatically uses the preferred reloader (inotify
if present with fallback to polling). However, it would be useful in
some scenarios if users could force polling.

The solution for this is to add a new configuration option called
'reload_engine' which takes one of three options: ['auto', 'poll',
'inotify'].

Fixes #1459
2017-02-14 19:49:37 +03:00
Berker Peksag
31b8e48a78 Silence prospector warnings 2017-02-07 09:05:43 +03:00
Berker Peksag
5559f27ea2 Fix test_ssl 2017-02-06 09:18:41 +03:00
Berker Peksag
577c3eb030 Use the best available reloader when --reload is passed
Fixes #1422
2017-02-06 07:32:14 +03:00
Benoit Chesneau
bd19be1b61 Merge pull request #1414 from benoitc/fix/1091-pidfile-eperm
Fix/1091 pidfile eperm
2017-02-01 14:14:13 +01:00
Benoit Chesneau
21ffa92be1 Merge pull request #1394 from jonashaag/master
Add child_exit() callback to configuration
2017-01-27 16:00:58 +01:00
Hasan Ramezni
e9a00b75c5 add empty line after some tests. 2017-01-17 20:37:02 +03:00
Hasan Ramezni
e007601f0d test error message in test_invalid_enviroment_variables_config test. 2017-01-17 00:55:45 +03:00
Hasan Ramezni
bb2496db7b test_cmd_line_invalid_setting added. 2017-01-15 23:34:23 +03:00
Randall Leeds
22de9c5693 add pidfile validate tests 2017-01-11 19:52:15 -08:00
Saeed Gharedaghi
ab444eed50 change __dict__ to vars function
Back gunicorn/argparse_compat.py gunicorn/six.py files changes

Back run_gunicorn.py file changes
2017-01-11 23:07:20 +03:00
Hasan Ramezani
3f9eace246 Add ability to pass settings to GUNICORN_CMD_ARGS. (#1385) 2017-01-08 16:41:28 +03:00
Randall Leeds
0be7996885 Refactor socket activation and fd inheritance (#1310)
Track the use of systemd socket activation and gunicorn socket inheritance
in the arbiter. Unify the logic of creating gunicorn sockets from each of
these sources to always use the socket name to determine the type rather
than checking the configured addresses. The configured addresses are only
used when there is no inheritance from systemd or a parent arbiter.

Fix #1298
2016-12-27 14:01:20 -08:00
Jonas Haag
53fd1c1071 Add child_exit() callback
This is similar to worker_exit() in that it is called just after a
worker has terminated, but it's called in the Gunicorn *master* process,
not the *child* process.
2016-11-25 12:16:23 +01:00
Jonas Haag
b3c4260706 Add test for worker_exit() 2016-11-25 12:16:23 +01:00
Your Name
a912e305c9 Reject requests like "GET / HTTP/1a1"
Numbers must be separated by dot. This makes life
a little bit harder for attackers who would like to inject specially crafted packets after GET / (e.g. in nginx there are sometimes regular expressions like (?P<action>[^.]).html
2016-11-04 21:16:01 +03:00
Roy Williams
b4c41481e2 Fix leak of duplicate file descriptor for bound sockets.
`socket.fromfd` does not close the original file descriptor, so we have to explicitly close it to avoid a leak.

See also:
http://bugs.python.org/issue10099
2016-10-18 00:15:40 +03:00
Tobias Gustafsson
70cfb0d818 Remove upper limit on max header size config (#1313)
Fixes #1306
2016-09-17 12:49:05 +03:00
benoitc
418f140445 remove file locking
This changes improve the binary upgrade behaviour using USR2:

- only one binary upgrade can happen at a time: the old arbiter needs to be
  killed to promote the new arbiter.
- if a new arbiter is already spawned, until one is killed USR2 has no action
- if a new arbiter has been spawned, the unix socket won't be unlinked
- until the old arbiter have been killed the newly created pidfile has the name
  <pidfile>.2 and the name Master.2 .

Note: there is no dialog between both arbiters to handle this features.
Instead they will supervise each others until one is killed. So isolation is
still guaranted.

fix #1267
2016-05-20 15:42:55 +02:00
benoitc
8a6748ee65 fix unix socket locking
This change add proper file locking to gunicorn. By default "gunicorn.lock" is created in the temporary directory when a unix socket is bound.  In case someone want to fix the lock file path or use multiple gunicorn instance the "--lock-file" setting can be used to set the path of this file.

fix #1259
2016-05-14 22:03:40 +02:00
Eugene Obukhov
a04b5f0975 Add tests for reader classes (#1241)
* Fix FakeSocket.recv method

* Add tests for Unreader and its subclasses

* Add tests for EOFReader and LengthReader
2016-04-15 00:49:00 +03:00
Berker Peksag
31fd844333 Fix test_http on Python 2 2016-03-20 08:16:05 +02:00
Berker Peksag
b17f1bc305 Fix typo in test name 2016-03-20 07:52:59 +02:00