On Sat, Feb 28, 2015 at 9:03 AM, Baptiste <bed...@gmail.com> wrote: > On Sat, Feb 28, 2015 at 8:42 AM, Vivek Malik <vivek.ma...@gmail.com> wrote: >> Hi Baptise, >> >> Using set-map on the stats socket gives the expected result (except >> that I can't use functions there). set map motion.map monday 12345 did >> set the map with key monday and value as 12345. >> >> I found that "http-request set-map(motion.map) monday %[date]" doesn't >> work, but "http-request set-map(motion.map) %t" does work. Using %T, >> %TL, %t works as expected but %[date] doesn't. >> >> Moreover, I am getting crazy results when I try to use "http-request >> set-map(motion.map) monday %[src]". Using this makes both key and >> value as src. >> >> BTW, I am using >> >> HA-Proxy version 1.5.11 2015/01/31 >> Copyright 2000-2015 Willy Tarreau <w...@1wt.eu> >> >> Build options : >> TARGET = linux2628 >> CPU = generic >> CC = gcc >> CFLAGS = -O2 -g -fno-strict-aliasing >> OPTIONS = USE_ZLIB=1 USE_OPENSSL=1 USE_STATIC_PCRE=1 >> >> Default settings : >> maxconn = 2000, bufsize = 16384, maxrewrite = 8192, maxpollevents = 200 >> >> Encrypted password support via crypt(3): yes >> Built with zlib version : 1.2.8 >> Compression algorithms supported : identity, deflate, gzip >> Built with OpenSSL version : OpenSSL 1.0.1f 6 Jan 2014 >> Running on OpenSSL version : OpenSSL 1.0.1f 6 Jan 2014 >> OpenSSL library supports TLS extensions : yes >> OpenSSL library supports SNI : yes >> OpenSSL library supports prefer-server-ciphers : yes >> Built with PCRE version : 8.31 2012-07-06 >> PCRE library supports JIT : no (USE_PCRE_JIT not set) >> Built with transparent proxy support using: IP_TRANSPARENT >> IPV6_TRANSPARENT IP_FREEBIND >> >> Available polling systems : >> epoll : pref=300, test result OK >> poll : pref=200, test result OK >> select : pref=150, test result OK >> Total: 3 (3 usable), will use epoll. > > > Hi Vivek, > > I can reproduce the bug, I'm digging into it. > > Baptiste
I was able to isolate the bug here: src/proto_http.c:3490. For some reason, when the first argument is a raw string and the second is a fetch, then the first argument ('key') is erased after build_logline returns on line 3490. If second argument is a string, then no problem: http-request set-map(/tmp/motion.map) monday monday ==> works as expected http-request set-map(/tmp/motion.map) %[date()] monday ==> works as expected http-request set-map(/tmp/motion.map) monday %[date()] ==> bug as reported by vivek I won't be able to go further on this bug today. If I can't during the week-end, and nobody did, I'll talk to Willy on Monday. Baptiste