44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
import socket
|
|
from datetime import timedelta
|
|
|
|
import pytest
|
|
|
|
from .conf import TlsTestConf
|
|
|
|
|
|
class TestTimeout:
|
|
|
|
@pytest.fixture(autouse=True, scope='class')
|
|
def _class_scope(self, env):
|
|
conf = TlsTestConf(env=env, extras={
|
|
'base': "RequestReadTimeout handshake=1",
|
|
})
|
|
conf.add_tls_vhosts(domains=[env.domain_a, env.domain_b])
|
|
conf.install()
|
|
assert env.apache_restart() == 0
|
|
|
|
@pytest.fixture(autouse=True, scope='function')
|
|
def _function_scope(self, env):
|
|
pass
|
|
|
|
def test_tls_09_timeout_handshake(self, env):
|
|
# in domain_b root, the StdEnvVars is switch on
|
|
s = socket.create_connection(('localhost', env.https_port))
|
|
s.send(b'1234')
|
|
s.settimeout(0.0)
|
|
try:
|
|
s.recv(1024)
|
|
assert False, "able to recv() on a TLS connection before we sent a hello"
|
|
except BlockingIOError:
|
|
pass
|
|
s.settimeout(3.0)
|
|
try:
|
|
while True:
|
|
buf = s.recv(1024)
|
|
if not buf:
|
|
break
|
|
print("recv() -> {0}".format(buf))
|
|
except (socket.timeout, BlockingIOError):
|
|
assert False, "socket not closed as handshake timeout should trigger"
|
|
s.close()
|