Allow users to customize max header size

Also increases the default value from 8192 to 16384

The former max header (8192) is exceeded in the following scenario
- Auth tokens built with a keystone v3 API catalog
- A catalog with approximately 8 or more endpoints defined

Equivalent fixes have been proposed in other projects

Change-Id: Ic714166440e2aa08b619ab1e5e5e0cf3cea3e309
Closes-Bug: 1190149
This commit is contained in:
Florent Flament 2014-01-13 13:43:59 +00:00
parent eac47b642c
commit df8be62e58
2 changed files with 12 additions and 0 deletions

View File

@ -73,6 +73,12 @@ sql_idle_timeout = 3600
# this value to the number of CPUs present on your machine.
workers = 1
# Maximum line size of message headers to be accepted.
# max_header_line may need to be increased when using large tokens
# (typically those generated by the Keystone v3 API with big service
# catalogs)
# max_header_line = 16384
# Role used to identify an authenticated user as administrator
#admin_role = admin

View File

@ -79,6 +79,11 @@ eventlet_opts = [
'only supported \'poll\', however \'selects\' may be '
'appropriate for some platforms. See '
'http://eventlet.net/doc/hubs.html for more details.')),
cfg.IntOpt('max_header_line', default=16384,
help=_('Maximum line size of message headers to be accepted. '
'max_header_line may need to be increased when using '
'large tokens (typically those generated by the '
'Keystone v3 API with big service catalogs')),
]
@ -177,6 +182,7 @@ class Server(object):
"""Server class to manage multiple WSGI sockets and applications."""
def __init__(self, threads=1000):
eventlet.wsgi.MAX_HEADER_LINE = CONF.max_header_line
self.threads = threads
self.children = []
self.running = True