http://svn.apache.org/viewvc?rev=1891989&view=rev http://svn.apache.org/viewvc?rev=1891990&view=rev
On Tue, Aug 3, 2021 at 1:14 PM Eric Covener <cove...@gmail.com> wrote: > > On Tue, Aug 3, 2021 at 11:43 AM Eric Covener <cove...@gmail.com> wrote: > > > > It looks like replace() was broken somewhere after it was committed, > > but I can't tell how. > > Does it work for anyone? > > > > There seems to be some confusion about the arguments. > > > > 1. During parsing, a weird loop in ap_expr_info_make causes the final > > list argument to be parsed as the strmatch pattern, but the last > > element is the replacement string not the pattern (from). The 2nd > > argument is the pattern. > > Jan's example was: > > Require expr replace(%{REQUEST_METHOD}, "E", "O") == "GOT" > > and trace confirms that the pattern is "O" > > > > 2. During evaluation, The remaining arguments are passed in an array > > that skips over the first value, but it still expects three arguments > > in the array. > > [Tue Aug 03 15:32:40.807613 2021] [authz_core:error] [pid 33929:tid > > 123145531994112] [client 127.0.0.1:64195] AH03299: Evaluation of > > expression from > > /Users/covener/SRC/httpd-trunk/built/conf/httpd.conf:544 failed: > > replace() function needs exactly 3 arguments > > > > Unfortunately I think these same quirks are passed on to any > > list-based string function registered dynamically by a module. But > > fortunately they are trunk-only. > > > > Looks like some of the confusion comes from the type of the args, some > of my testing was with literal strings and some not. -- Eric Covener cove...@gmail.com