I have been searching for an answer in httpd forum. But I think I need to ask here:
I have a requirement to look at content length and if it is greatar than desired size then return error message. So psuedo code is like: if content_length > 32G then if url contains /abc/ then echo "0|abc|Bad length" # pipe delimited format that some clients api support else if url contains /def/ echo "<xml><message>Bad request</message><xml>" # client supporting XML fi fi I first thought of using LimitRequestBody but that didn't work for me. So now I am thinking if using perl handlers. P.S. Note: Our requests are mod-jk requests. So if content length check succeeds then hand over the request to mod jk workers wihch then send it to jboss app server. I tried to write code but still unsure of few thing: 1. If I return HTTP_REQUEST_ENTITY_TOO_LARGE response then would it still continue sending the request to mod_jk. Or would it be returned back to the client? When does apache decide if request need to be stopped and send back to the client. 2. Does my code look ok and something that will work? Can someone please suggest? This is my sample code sub content_handler { my $r = shift; my $uri = $r->uri; if ( $r->header_in("Content-length") lt 20000000) { return Apache2::Const::OK; # Continue sending request to mod jk worker } $r->send_http_header; if ($uri =~ /xml/){ $r->content_type("text/xml"); $r->print("File too large|Bye"); #Send pipe delimited back to the client assuming it will not continue sending this request to mod_jk worker }else{ $r->content_type("text/plain"); $r->print ("<xml><Message>Too Large, Bye!!</Message></xml>"); #Send xml delimited back to the client assuming it will not continue sending this request to mod_jk worker } return Apache2::Const::HTTP_REQUEST_ENTITY_TOO_LARGE; # Return back to client