|Summary:||www/squid PCRE regexp doesn't work anymore|
|Product:||Ports & Packages||Reporter:||OlivierW <olivierw1+bugzilla-freebsd>|
|Component:||Individual Port(s)||Assignee:||freebsd-ports-bugs (Nobody) <ports-bugs>|
|Severity:||Affects Only Me||CC:||timp87|
Description OlivierW 2020-01-12 10:11:01 UTC
Hello, Two years ago, I have helped enabling PCRE regexp in Squid's port, see #223505. Back then I was using Squid 3.5.x on FreeBSD 11.x and it was fine :-) Now, I am updating to Squid 4.9 on FreeBSD 12.1 and PCRE regexp don't work anymore, I am getting back the error message I previously had before #223505 : "repetition-operator operand invalid". I've also tried to install squid3 (3.5.28_3), and got the same error. The good news, I have found I need to add: --enable-gnuregex at the end of CONFIGURE_ARGS= in the port Makefile. This option is documented here: https://github.com/squid-cache/squid/blob/77b1029d207083d583d81d2f2fb7a840e0f23cab/configure.ac#L3615 It does fix my problem, but is it the right way to do it? I mean, in their explanation of the option, they say it is for Windows or old UNIX which don't have a regex lib. Has anything has changed in FreeBSD 12 regarding regexp? Does anyone know why that happens? I have tried compiling with and without the PCRE option added in #223505, and it does work in both case: this option seems useless with "--enable-gnuregex". What should I do to help? Is it OK to directly add this "--enable-gnuregex" option to CONFIGURE_ARGS? Or should I add a configurable option? I can provide a patch, I just need to know what is best to do :-) Best Regards, Olivier
Comment 1 timp87 2020-02-05 07:52:51 UTC
(In reply to OlivierW from comment #0) Hello, thanks a lot for the report! And sorry for the delay. I'm gonna update squid to 4.10 and try to fix it. Well, to get right answers about --enable-gnuregex it's better to ask squid maillist instead and rise an discussion there. I'm trying to understand how it may be fixed the right way.
Comment 2 timp87 2020-02-05 08:02:37 UTC
(In reply to OlivierW from comment #0) Could you share your example of ACL to check it?
Comment 3 OlivierW 2020-03-01 17:08:50 UTC
Hello, Thanks for your answer! I currently don't have access to the specific regexes, but they are similar to: acl example url_regex -i ^http:\/\/www\.example\.com\/.*?\.js I've tried this one in a VM with FreeBSD 12.1 and Squid 4.10 from ports and I am getting the error. I've found I can fix it by removing the lazy quantifier (from .*? to .*): acl example url_regex -i ^http:\/\/www\.example\.com\/.*\.js Both regexes are accepted with Squid 4.10 compiled with "--enable-gnuregex". Maybe I should just change my regexes to remove the lazy quantifier? Hoping it's the only case causing a problem. As you said, I'll ask on Squid's mailing list to know what is the right thing to do. Best Regards, Olivier