Forum Discussion

Pradeep_Kandala's avatar
Pradeep_Kandala
Icon for Nimbostratus rankNimbostratus
Nov 06, 2012

HTTP::Collect and HTTP::payload Not working

I got some problem,

 

In HTTP::request I'm able to collect only upto 200 bytes using HTTP::collect 200 , if I'm specifying the full body length with full number or using Content-Length of HTTP::header it is not working.

 

In HTTP_DATA_REQUEST only able to collect payload of 200 anything above it is not working.

 

Can you please suggest ?

 

Thanks a lot in advance

 

Pradeep

 

16 Replies

  • Hi,

     

    Based on the above ..

     

    Can I have have work around ? to get a post data of 5677 size??

     

    Please, Its an urgent issue.

     

    Thanks a lot in advance

     

    Pradeep
  • I'm sorry but I'm almost out of ideas with just the possibility of a software bug if you can provide a version number. Do you have a support contract in place?
  • I'm not sure where to check the TMOS version.Can you tell me where ?

     

    and Virtual Server has HTTP::profile assigned.

     

    Pradeep
  • Menu path: System > Software Management > Boot Locations

     

    tmsh path: [tmsh] show sys version
  • Is the request chunked or does it not have a content length header? Can you try this version with a bit more debug and reply with the sanitized logs from /var/log/ltm?

     

    
    when HTTP_REQUEST {
    
     Collect up to the first 1MB of POST data
    log local0. "Checking post method [HTTP::method] uri: [HTTP::uri] http_version: [HTTP::version] IP: [IP::client_addr]"
    log local0. "Headers: [HTTP::request]"
    
    if {[HTTP::method] eq "POST"}{
    
     Check if there is a content-length header and the value is set to less than 1Mb
    if {[HTTP::header exists "Content-Length"] && [HTTP::header "Content-Length"] <= 1048576}{
    set clength [HTTP::header "Content-Length"]
    } else {
    set clength 1048576
    }
    log local0. "Checking content length $clength IP: [IP::client_addr]"
    if { $clength > 0} {
    if {$debug}{log local0. "[virtual name]: Collecting $clength bytes IP: [IP::client_addr]"}
    HTTP::collect [HTTP::header "Content-Length"]
    }
    }
    }
    
    when HTTP_REQUEST_DATA {
    
    if {$debug}{log local0. "Collecting payload [HTTP::header "Content-Length"] IP: [IP::client_addr]"}
    set SAMLResponse [HTTP::payload [HTTP::header "Content-Length"]]
    
    log local0. "saml response : $SAMLResponse IP: [IP::client_addr] "
    HTTP::release
    }
    

     

    Aaron

  • Im experiencing same issue as well.Do we've any fix for it. when HTTP_REQUEST { if {[HTTP::method] eq "POST" && [string tolower [HTTP::path]] contains "tealeaftarget" }{ Trigger collection for up to 12K of data if {[HTTP::header "Content-Length"] ne "" && [HTTP::header "Content-Length"] <= 12228}{ set content_length [HTTP::header "Content-Length"] } else { set content_length 12228 } Check if $content_length is not set to 0 if { $content_length > 0} { HTTP::collect $content_length } } } when HTTP_REQUEST_DATA { do stuff with the payload set count [string length [HTTP::payload]] set response "received a total of $count of a planned $content_length bytes" HTTP::respond 200 content $response }

     

    Error is as below. TCL error: IRULE NAME - Operation not supported (line 1) invoked from within "HTTP::collect $content_length"