diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2013-04-11 20:48:42 +0200 |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2013-04-11 20:48:42 +0200 |
commit | 50b24d0d7cc7b787acc1f8481173e5e0d536fe28 (patch) | |
tree | 7465cab4d1a418ce907c6d60aafd3ba9376aa529 /Lib/test/test_ssl.py | |
parent | 85b2afb1b1f3e24b1ecddfc955b5d4614fc6f39e (diff) | |
download | cpython-git-50b24d0d7cc7b787acc1f8481173e5e0d536fe28.tar.gz |
Fix a crash when setting a servername callback on a SSL server socket and the client doesn't send a server name.
Patch by Kazuhiro Yoshida.
(originally issue #8109)
Diffstat (limited to 'Lib/test/test_ssl.py')
-rw-r--r-- | Lib/test/test_ssl.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 408033e242..1f0f62ab80 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -2096,7 +2096,8 @@ else: def servername_cb(ssl_sock, server_name, initial_context): calls.append((server_name, initial_context)) - ssl_sock.context = other_context + if server_name is not None: + ssl_sock.context = other_context server_context.set_servername_callback(servername_cb) stats = server_params_test(client_context, server_context, @@ -2108,6 +2109,14 @@ else: # CERTFILE4 was selected self.check_common_name(stats, 'fakehostname') + calls = [] + # The callback is called with server_name=None + stats = server_params_test(client_context, server_context, + chatty=True, + sni_name=None) + self.assertEqual(calls, [(None, server_context)]) + self.check_common_name(stats, 'localhost') + # Check disabling the callback calls = [] server_context.set_servername_callback(None) |