@@ -2142,3 +2142,177 @@ qr/elapsed in ssl_certificate_by_lua\*: 0\.(?:09|1[01])\d+,/,
21422142[error]
21432143[alert]
21442144[emerg]
2145+
2146+
2147+
2148+ === TEST 25: cosocket (UDP)
2149+ --- http_config
2150+ server {
2151+ listen unix: $ TEST_NGINX_HTML_DIR / nginx. sock ssl;
2152+ server_name test. com;
2153+ ssl_certificate .. / .. / cert/ test. crt;
2154+ ssl_certificate_key .. / .. / cert/ test. key ;
2155+ server_tokens off;
2156+
2157+ ssl_certificate_by_lua_block {
2158+ local sock = ngx. socket. udp()
2159+
2160+ sock: settimeout(1000 )
2161+
2162+ local ok , err = sock: setpeername(" 127.0.0.1" , $ TEST_NGINX_MEMCACHED_PORT )
2163+ if not ok then
2164+ ngx. log (ngx. ERR, " failed to connect to memc: " , err)
2165+ return
2166+ end
2167+
2168+ local req = " \0\1\0\0\0\1\0\0flush_all\r\n "
2169+ local ok , err = sock: send(req)
2170+ if not ok then
2171+ ngx. log (ngx. ERR, " failed to send flush_all to memc: " , err)
2172+ return
2173+ end
2174+
2175+ local res, err = sock: receive()
2176+ if not res then
2177+ ngx. log (ngx. ERR, " failed to receive memc reply: " , err)
2178+ return
2179+ end
2180+
2181+ ngx. log (ngx. INFO, " received memc reply of " , # res, " bytes")
2182+ }
2183+ }
2184+ --- config
2185+ server_tokens off;
2186+ lua_ssl_trusted_certificate .. /.. / cert/ test. crt;
2187+ lua_ssl_verify_depth 3 ;
2188+
2189+ location / t {
2190+ content_by_lua_block {
2191+ do
2192+ local sock = ngx. socket. tcp()
2193+
2194+ sock: settimeout(2000 )
2195+
2196+ local ok , err = sock: connect(" unix:$ TEST_NGINX_HTML_DIR /nginx.sock" )
2197+ if not ok then
2198+ ngx. say (" failed to connect: " , err)
2199+ return
2200+ end
2201+
2202+ ngx. say (" connected: " , ok )
2203+
2204+ local sess, err = sock: sslhandshake(nil, " test.com" , true)
2205+ if not sess then
2206+ ngx. say (" failed to do SSL handshake: " , err)
2207+ return
2208+ end
2209+
2210+ ngx. say (" ssl handshake: " , type(sess))
2211+ end -- do
2212+ -- collectgarbage()
2213+ }
2214+ }
2215+ -- - request
2216+ GET / t
2217+ -- - response_body
2218+ connected: 1
2219+ ssl handshake: userdata
2220+ -- - no_error_log
2221+ [error]
2222+ [alert]
2223+ [emerg]
2224+ -- - grep_error_log eval: qr/ received memc reply of \d+ bytes /
2225+ -- - grep_error_log_out eval
2226+ [
2227+ ' received memc reply of 12 bytes
2228+ ' ,
2229+ ' received memc reply of 12 bytes
2230+ ' ,
2231+ ' received memc reply of 12 bytes
2232+ ' ,
2233+ ' received memc reply of 12 bytes
2234+ ' ,
2235+ ]
2236+
2237+
2238+
2239+ === TEST 26 : uthread (kill )
2240+ -- - http_config
2241+ server {
2242+ listen unix: $ TEST_NGINX_HTML_DIR / nginx. sock ssl;
2243+ server_name test. com;
2244+ ssl_certificate .. / .. / cert/ test. crt;
2245+ ssl_certificate_key .. / .. / cert/ test. key ;
2246+ server_tokens off;
2247+
2248+ ssl_certificate_by_lua_block {
2249+ local function f()
2250+ ngx. log (ngx. INFO, " uthread: hello from f()" )
2251+ ngx. sleep (1 )
2252+ end
2253+
2254+ local t, err = ngx. thread. spawn(f)
2255+ if not t then
2256+ ngx. log (ngx. ERR, " failed to spawn thread: " , err)
2257+ return ngx. exit(ngx. ERROR)
2258+ end
2259+
2260+ local ok , res = ngx. thread. kill (t)
2261+ if not ok then
2262+ ngx. log (ngx. ERR, " failed to kill thread: " , res)
2263+ return
2264+ end
2265+
2266+ ngx. log (ngx. INFO, " uthread: killed" )
2267+
2268+ local ok , err = ngx. thread. kill (t)
2269+ if not ok then
2270+ ngx. log (ngx. INFO, " uthread: failed to kill: " , err)
2271+ end
2272+ }
2273+ }
2274+ -- - config
2275+ server_tokens off;
2276+ lua_ssl_trusted_certificate .. / .. / cert/ test. crt;
2277+ lua_ssl_verify_depth 3 ;
2278+
2279+ location / t {
2280+ content_by_lua_block {
2281+ do
2282+ local sock = ngx. socket. tcp()
2283+
2284+ sock: settimeout(2000 )
2285+
2286+ local ok , err = sock: connect(" unix:$ TEST_NGINX_HTML_DIR /nginx.sock" )
2287+ if not ok then
2288+ ngx. say (" failed to connect: " , err)
2289+ return
2290+ end
2291+
2292+ ngx. say (" connected: " , ok )
2293+
2294+ local sess, err = sock: sslhandshake(nil, " test.com" , true)
2295+ if not sess then
2296+ ngx. say (" failed to do SSL handshake: " , err)
2297+ return
2298+ end
2299+
2300+ ngx. say (" ssl handshake: " , type(sess))
2301+ end -- do
2302+ -- collectgarbage()
2303+ }
2304+ }
2305+ -- - request
2306+ GET / t
2307+ -- - response_body
2308+ connected: 1
2309+ ssl handshake: userdata
2310+ -- - no_error_log
2311+ [error]
2312+ [alert]
2313+ [emerg]
2314+ -- - grep_error_log eval: qr/ uthread: [^. ,]+/
2315+ -- - grep_error_log_out
2316+ uthread: hello from f()
2317+ uthread: killed
2318+ uthread: failed to kill : already waited or killed
0 commit comments