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

Reply via email to