Merge pull request #725 from sholsapp/master

Remove incompatible SSL option in Python 2.6
This commit is contained in:
Randall Leeds 2014-04-24 14:25:06 -07:00
commit 249511c5bb
2 changed files with 25 additions and 26 deletions

View File

@ -143,17 +143,9 @@ class Config(object):
@property @property
def ssl_options(self): def ssl_options(self):
opts = {} opts = {}
for name, value in self.settings.items():
for attr in('certfile', 'keyfile', 'cert_reqs', 'ssl_version', \ if value.section == 'Ssl':
'ca_certs', 'suppress_ragged_eofs', 'do_handshake_on_connect', opts[name] = value.get()
'ciphers'):
# suppress_ragged_eofs/do_handshake_on_connect are booleans that can
# be False hence we use hasattr instead of getattr(self, attr, None).
if hasattr(self, attr):
value = getattr(self, attr)
opts[attr] = value
return opts return opts
@property @property
@ -1552,12 +1544,13 @@ class DoHandshakeOnConnect(Setting):
Whether to perform SSL handshake on socket connect (see stdlib ssl module's) Whether to perform SSL handshake on socket connect (see stdlib ssl module's)
""" """
class Ciphers(Setting): if sys.version_info >= (2, 7):
name = "ciphers" class Ciphers(Setting):
section = "Ssl" name = "ciphers"
cli = ["--ciphers"] section = "Ssl"
validator = validate_string cli = ["--ciphers"]
default = 'TLSv1' validator = validate_string
desc = """\ default = 'TLSv1'
Ciphers to use (see stdlib ssl module's) desc = """\
""" Ciphers to use (see stdlib ssl module's)
"""

View File

@ -8,13 +8,17 @@
# stdlib # stdlib
import inspect import inspect
import ssl import ssl
import sys
from unittest import TestCase from unittest import TestCase
# gunicorn # gunicorn
from gunicorn.config import KeyFile, CertFile, SSLVersion, CACerts, \ from gunicorn.config import KeyFile, CertFile, SSLVersion, CACerts, \
SuppressRaggedEOFs, DoHandshakeOnConnect, Ciphers, Setting, validate_bool, validate_string, \ SuppressRaggedEOFs, DoHandshakeOnConnect, Setting, validate_bool, validate_string, \
validate_pos_int validate_pos_int
if sys.version_info >= (2, 7):
from gunicorn.config import Ciphers
class SSLTestCase(TestCase): class SSLTestCase(TestCase):
def test_settings_classes(self): def test_settings_classes(self):
""" Tests all settings options and their defaults. """ Tests all settings options and their defaults.
@ -59,8 +63,10 @@ class SSLTestCase(TestCase):
self.assertEquals(DoHandshakeOnConnect.action, 'store_true') self.assertEquals(DoHandshakeOnConnect.action, 'store_true')
self.assertEquals(DoHandshakeOnConnect.default, False) self.assertEquals(DoHandshakeOnConnect.default, False)
self.assertTrue(issubclass(Ciphers, Setting))
self.assertEquals(Ciphers.name, 'ciphers') if sys.version_info >= (2, 7):
self.assertEquals(Ciphers.section, 'Ssl') self.assertTrue(issubclass(Ciphers, Setting))
self.assertEquals(Ciphers.cli, ['--ciphers']) self.assertEquals(Ciphers.name, 'ciphers')
self.assertEquals(Ciphers.default, 'TLSv1') self.assertEquals(Ciphers.section, 'Ssl')
self.assertEquals(Ciphers.cli, ['--ciphers'])
self.assertEquals(Ciphers.default, 'TLSv1')