Hello,

we're experiencing issues with HAproxy 1.5-dev11 rejecting GET requests with UTF8-encoded characters. The encoding happens with Javascript's Encode function for east european characters (š, č, ž, etc) .

The requests (as seen from 'echo "show errors" | socat stdio unix-connect:/var/run/haproxy.sock') are:

Total events captured on [25/Jul/2012:08:10:16.070] : 1347

[25/Jul/2012:08:10:16.033] frontend http-in (#2): invalid request
  backend <NONE> (#-1), server <NONE> (#-1), event #1346
  src 91.216.172.145:40752, session #527199, session flags 0x00000000
  HTTP msg state 27, msg flags 0x00000000, tx flags 0x00000000
  HTTP chunk len 0 bytes, HTTP body len 0 bytes
  buffer flags 0x00809002, out 0 bytes, total 873 bytes
  pending 873 bytes, wrapping at 16384, error at position 51:

  00000  GET /XXX/YYY?z=39;t=js;sid=index;ssid=\xC2\xA7=index;m=ZZ
  00064+ ZZ;ref=http://www.ZZZ.com/lala;num=9;kw=;flash=0;res=lala;r
  00134+ e=http%3A%2F%2Fwww.QQQ.com%2Fsi%2FZZZ.html;rmc=1343196615443;cpre
  00204+ mium=false;url=http%3A//www.ZZZ.com/lala HTTP/1.1\r\n
  00260  Via: 1.0 SREMISA2\r\n
00279 Cookie: CT=true; UID=121617214516589645; CA1590=0:0:0:4:4:3:0:13395679 00349+ 37; AD8413=0:0:0:1:1:1:0:1339563959; CA1645=0:0:0:4:4:3:0:1339568497; 00419+ CA1617=0:0:0:4:1:1:0:1341379400; AD8579=0:0:0:5:2:2:0:1340173696; AD86 00489+ 86=0:0:0:3:3:1:0:1343195149; CA1686=0:0:0:3:3:1:0:1343195149; CA1688=0
  00559+ :0:0:1:1:1:0:1343195915\r\n
  00584  Referer: http://www.ZZZ.com/lala\r\n
00623 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .N 00693+ ET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR
  00763+ 3.5.30729; InfoPath.3)\r\n
  00787  Host: XXX.com\r\n
  00813  Accept: */*\r\n
  00826  Accept-Language: sl\r\n
  00847  Connection: Keep-Alive\r\n
  00871  \r\n

The configuration of haproxy attached.

global
        log 127.0.0.1   local1 notice
        maxconn 409600
        user haproxy
        group haproxy
        daemon
        stats socket /var/run/haproxy.sock gid 117 mode 0660 level operator

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        maxconn 40000
        timeout connect 3000
        timeout client  50000
        timeout server 50000
        option httpclose
        option forwardfor

frontend http-in
    option httplog
    log global
    option log-separate-errors
    bind XXX:80
    acl is_XXX hdr_end(host) -i XXX.net

    use_backend XXX if is_XXX
    default_backend YYY

backend XXX
        mode http
        timeout connect 1000
        timeout server 1000
        timeout http-request 1000
        timeout queue 1000
        balance leastconn
        server A XXX:80 check inter 2000 rise 2 fall 5
        server B YYY:80 check inter 2000 rise 2 fall 5

backend YYY
        mode http
        log global
        option httplog
        timeout connect 3000
        timeout server 3000
        timeout http-request 3000
        timeout queue 3000
        balance leastconn
        server C ZZZ:80 check inter 2000 rise 2 fall 5
        server D QQQ:80 check inter 2000 rise 2 fall 5
                

Reply via email to