Skip to content

Commit 467f013

Browse files
spacewanderthibaultcha
authored andcommitted
tests: added tests asserting that 'ssl_certificate_by_lua*' and 'ssl_session_fetch_by_lua*' can yield when reading early data.
Signed-off-by: Thibault Charbonnier <thibaultcha@me.com>
1 parent d3dbc0c commit 467f013

File tree

2 files changed

+143
-0
lines changed

2 files changed

+143
-0
lines changed

t/139-ssl-cert-by.t

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2075,3 +2075,70 @@ client socket file:
20752075
--- no_error_log
20762076
[error]
20772077
[alert]
2078+
2079+
2080+
2081+
=== TEST 24: ssl_certificate_by_lua* can yield when reading early data
2082+
--- skip_openssl: 6: < 1.1.1
2083+
--- http_config
2084+
server {
2085+
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;
2086+
server_name test.com;
2087+
ssl_certificate ../../cert/test.crt;
2088+
ssl_certificate_key ../../cert/test.key;
2089+
ssl_early_data on;
2090+
server_tokens off;
2091+
2092+
ssl_certificate_by_lua_block {
2093+
local begin = ngx.now()
2094+
ngx.sleep(0.1)
2095+
print("elapsed in ssl_certificate_by_lua*: ", ngx.now() - begin)
2096+
}
2097+
}
2098+
--- config
2099+
server_tokens off;
2100+
lua_ssl_trusted_certificate ../../cert/test.crt;
2101+
lua_ssl_verify_depth 3;
2102+
2103+
location /t {
2104+
content_by_lua_block {
2105+
do
2106+
local sock = ngx.socket.tcp()
2107+
2108+
sock:settimeout(2000)
2109+
2110+
local ok, err = sock:connect("unix:$TEST_NGINX_HTML_DIR/nginx.sock")
2111+
if not ok then
2112+
ngx.say("failed to connect: ", err)
2113+
return
2114+
end
2115+
2116+
ngx.say("connected: ", ok)
2117+
2118+
local sess, err = sock:sslhandshake(false, nil, true, false)
2119+
if not sess then
2120+
ngx.say("failed to do SSL handshake: ", err)
2121+
return
2122+
end
2123+
2124+
ngx.say("ssl handshake: ", type(sess))
2125+
end -- do
2126+
}
2127+
}
2128+
--- request
2129+
GET /t
2130+
--- response_body
2131+
connected: 1
2132+
ssl handshake: boolean
2133+
--- grep_error_log eval
2134+
qr/elapsed in ssl_certificate_by_lua\*: 0\.(?:09|1[01])\d+,/,
2135+
--- grep_error_log_out eval
2136+
[
2137+
qr/elapsed in ssl_certificate_by_lua\*: 0\.(?:09|1[01])\d+,/,
2138+
qr/elapsed in ssl_certificate_by_lua\*: 0\.(?:09|1[01])\d+,/,
2139+
qr/elapsed in ssl_certificate_by_lua\*: 0\.(?:09|1[01])\d+,/,
2140+
]
2141+
--- no_error_log
2142+
[error]
2143+
[alert]
2144+
[emerg]

t/143-ssl-session-fetch.t

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,3 +1353,79 @@ ssl_session_fetch_by_lua_block:1: ssl_session_fetch_by_lua\* is running!,
13531353
[error]
13541354
[alert]
13551355
[emerg]
1356+
1357+
1358+
1359+
=== TEST 17: ssl_session_fetch_by_lua* can yield when reading early data
1360+
--- skip_openssl: 6: < 1.1.1
1361+
--- http_config
1362+
ssl_session_fetch_by_lua_block {
1363+
local begin = ngx.now()
1364+
ngx.sleep(0.1)
1365+
print("elapsed in ssl_session_fetch_by_lua*: ", ngx.now() - begin)
1366+
}
1367+
1368+
server {
1369+
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;
1370+
server_name test.com;
1371+
ssl_certificate $TEST_NGINX_CERT_DIR/cert/test.crt;
1372+
ssl_certificate_key $TEST_NGINX_CERT_DIR/cert/test.key;
1373+
ssl_session_tickets off;
1374+
ssl_early_data on;
1375+
server_tokens off;
1376+
}
1377+
--- config
1378+
server_tokens off;
1379+
lua_ssl_trusted_certificate $TEST_NGINX_CERT_DIR/cert/test.crt;
1380+
1381+
location /t {
1382+
set $port $TEST_NGINX_MEMCACHED_PORT;
1383+
1384+
content_by_lua_block {
1385+
do
1386+
local sock = ngx.socket.tcp()
1387+
1388+
sock:settimeout(5000)
1389+
1390+
local ok, err = sock:connect("unix:$TEST_NGINX_HTML_DIR/nginx.sock")
1391+
if not ok then
1392+
ngx.say("failed to connect: ", err)
1393+
return
1394+
end
1395+
1396+
ngx.say("connected: ", ok)
1397+
1398+
local sess, err = sock:sslhandshake(package.loaded.session, "test.com", true)
1399+
if not sess then
1400+
ngx.say("failed to do SSL handshake: ", err)
1401+
return
1402+
end
1403+
1404+
ngx.say("ssl handshake: ", type(sess))
1405+
1406+
package.loaded.session = sess
1407+
1408+
local ok, err = sock:close()
1409+
ngx.say("close: ", ok, " ", err)
1410+
end -- do
1411+
-- collectgarbage()
1412+
}
1413+
}
1414+
--- request
1415+
GET /t
1416+
--- response_body
1417+
connected: 1
1418+
ssl handshake: userdata
1419+
close: 1 nil
1420+
--- grep_error_log eval
1421+
qr/elapsed in ssl_session_fetch_by_lua\*: 0\.(?:09|1[01])\d+,/,
1422+
--- grep_error_log_out eval
1423+
[
1424+
'',
1425+
qr/elapsed in ssl_session_fetch_by_lua\*: 0\.(?:09|1[01])\d+,/,
1426+
qr/elapsed in ssl_session_fetch_by_lua\*: 0\.(?:09|1[01])\d+,/,
1427+
]
1428+
--- no_error_log
1429+
[error]
1430+
[alert]
1431+
[emerg]

0 commit comments

Comments
 (0)