# This config file aims to trigger all error detection cases in the sample
# fetch expression parser related to the sample converters.

# silence some warnings
defaults
	mode http
	timeout client 1s
	timeout server 1s
	timeout connect 1s

frontend 1
	bind :10000

	# report "missing comma after fetch keyword %s"
	http-request add-header name %[hdr(arg))]

	# report "missing comma after conv keyword %s"
	http-request add-header name %[hdr(arg),ipmask(2))]

	# report "unknown conv method '%s'"
	http-request add-header name %[hdr(arg),blah]

	# report "syntax error: missing ')' after conv keyword '%s'"
	http-request add-header name %[hdr(arg),ipmask(2]

	# no way to report "returns type of conv method '%s' is unknown"

	# "conv method '%s' cannot be applied"
	http-request add-header name %[wait_end,ipmask(2)]

	# "conv method '%s' does not support any args"
	http-request add-header name %[hdr(arg),upper()]

	# "invalid arg %d in conv method '%s' : %s"
	http-request add-header name %[hdr(arg),ipmask(a)]

	# "invalid args in conv method '%s' : %s"
	http-request add-header name %[hdr(arg),map()]

	# "missing args for conv method '%s'"
	http-request add-header name %[hdr(arg),ipmask]

