httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pranesh Vadhirajan" <vadhira...@teralogics.com>
Subject Input Filters -- not seeing anything
Date Mon, 16 Jan 2012 16:12:06 GMT
Hello,

I'm very new to developing Input Filters with Apache. I have written an
input filter to read the request body content and print it to my error log.
I have two print statements in my filtering function (one to let me know
that my filter code has been called and the other to print the request
content).  Yet, I'm not seeing anything happening (nothing is getting
printed to my log).  I have tried different things but I'm not able to make
anything work, so I've attached the code below hoping to get some insight on
why my filter doesn't seem to work.  I am building the module using apxs and
I have a LoadModule directive in the httpd.conf file to load my module.  I'm
new to the filter API and I'm totally out of ideas at this point as to why
this is not working.


#include "httpd.h" 
#include "http_core.h"
#include "http_protocol.h"
#include "http_config.h"
#include "http_protocol.h"
#include "http_main.h"
#include "http_log.h"
#include "http_request.h"
#include "util_script.h"
#include "http_connection.h"
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#include <sys/types.h>
#include <regex.h>
#include <stdio.h>
#include "uvds_metrics_sessions.h"

#include "apr.h"
#include "apr_lib.h"
#include "apr_general.h"
#include "apr_strings.h"
#include "ap_config.h"
#include "apr_buckets.h"
#include "util_filter.h

static apr_status_t req_body_filter_in(ap_filter_t *f, apr_bucket_brigade
*b, ap_input_mode_t mode, apr_size_t *readbytes)
{
    const char *str;
    int length;
    apr_bucket *e;

    fprintf(stderr,"reached this point\n");

    ap_get_brigade(f->next, b, mode, APR_BLOCK_READ,1);

    e = APR_BRIGADE_FIRST(b);

    if (e->type == NULL) {
    return APR_SUCCESS;
    }

    apr_bucket_read(e, &str, (apr_size_t*)&length, APR_NONBLOCK_READ);
    fprintf(stderr,"req body: %s\n",str);

    return APR_SUCCESS;
}

static void my_register_hooks (apr_pool_t *p) {
        ap_hook_insert_filter(req_body_filter_in, NULL , NULL ,
APR_HOOK_MIDDLE) ;
        //ap_register_input_filter("get_request_body" , req_body_filter_in ,
NULL , AP_FTYPE_RESOURCE) ;

}

module AP_MODULE_DECLARE_DATA my_module =
{
        STANDARD20_MODULE_STUFF,
        NULL,                                           /* Per-Directory
Configuration */
        NULL,                                           /* Directory Config
Merger */
        NULL,                                           /* Per-Server
Configuration */
        NULL,                                           /* Server Config
Merger */
        NULL,                                           /* Command Table
(Directives) */
        my_register_hooks     				  /* Registering
Hooks */

};


Mime
View raw message