mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-02-01 15:31:18 +01:00
Lua test files 2 and 3 fail when threads are disabled because of a "nbthread" statement that seems to be a leftover from an ancient configuration. One of them even mentions a commit message showing a reproducer not involving threads. Let's clean this up so that running the tests without threads also works. This should be backported to 1.9 as the problem also exists there.
54 lines
1.5 KiB
Plaintext
54 lines
1.5 KiB
Plaintext
# commit 70d318c
|
|
# BUG/MEDIUM: lua: possible CLOSE-WAIT state with '\n' headers
|
|
#
|
|
# The Lua parser doesn't takes in account end-of-headers containing
|
|
# only '\n'. It expects always '\r\n'. If a '\n' is processes the Lua
|
|
# parser considers it miss 1 byte, and wait indefinitely for new data.
|
|
#
|
|
# When the client reaches their timeout, it closes the connection.
|
|
# This close is not detected and the connection keep in CLOSE-WAIT
|
|
# state.
|
|
#
|
|
# I guess that this patch fix only a visible part of the problem.
|
|
# If the Lua HTTP parser wait for data, the timeout server or the
|
|
# connectio closed by the client may stop the applet.
|
|
|
|
varnishtest "possible CLOSE-WAIT with '\n' headers"
|
|
#REQUIRE_OPTIONS=LUA
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
syslog Slog -level info -repeat 100 {
|
|
recv info
|
|
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Ta=[0-9]* Tc=[0-9]* Td=[0-9]* Th=[0-9]* Ti=[0-9]* Tq=[0-9]* TR=[0-9] Tr=[0-9]* Tt=[0-9]* Tw=[0-9]*"
|
|
} -start
|
|
|
|
haproxy h1 -conf {
|
|
defaults
|
|
timeout client 1s
|
|
timeout connect 1s
|
|
|
|
global
|
|
lua-load ${testdir}/b00003.lua
|
|
|
|
frontend frt
|
|
log ${Slog_addr}:${Slog_port} local0 debug err
|
|
log-format Ta=%Ta\ Tc=%Tc\ Td=%Td\ Th=%Th\ Ti=%Ti\ Tq=%Tq\ TR=%TR\ Tr=%Tr\ Tt=%Tt\ Tw=%Tw
|
|
mode http
|
|
${no-htx} option http-use-htx
|
|
bind "fd@${frt}"
|
|
http-request use-service lua.donothing
|
|
} -start
|
|
|
|
|
|
client c1 -connect ${h1_frt_sock} -repeat 100 {
|
|
send "GET / HTTP/1.1\n\n"
|
|
} -run
|
|
|
|
syslog Slog -wait
|
|
|
|
shell {
|
|
ss -pt | grep CLOSE-WAIT.*haproxy
|
|
exit $((!$?))
|
|
}
|