-
-- Hi,
im writing my first simple input filters ; i need it to debug the request body (content of POST) coming to my Web Server before is handled
by a third party contect handler module (which corrupt data).
I simply want to print out the content of the body request sent by the client . I wrote this peace of code:
static int redirect_wmlInFilter (ap_filter_t* f, apr_bucket_brigade* brigade,
ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes) {
apr_bucket* bucket ;
apr_status_t ret ;
if ( ret = ap_get_brigade(f->next, brigade, mode, block, readbytes) ,
ret == APR_SUCCESS )
for ( bucket = APR_BRIGADE_FIRST(brigade) ;
bucket != APR_BRIGADE_SENTINEL(brigade) ;
bucket = APR_BUCKET_NEXT(bucket) )
char *data[bucket->length];
int len;
apr_bucket_read(bucket,&data,&len,1);
ap_log_perror(APLOG_MARK, APLOG_NOTICE, NULL, f->c->pool,
"(IN) %s %s: %d bytes - %s ", f->frec->name, t, bucket->length , data );
else
ap_log_perror(APLOG_MARK, APLOG_NOTICE, NULL, f->c->pool,
"(IN) %s: ap_get_brigade returned %d", f->frec->name, ret) ;
return ret ;
}
The filter is then registered as input filter in the AP_FTYPE_TRANSCODE phase.
static void redirect_wmlRegisterHooks(apr_pool_t *p) {
ap_register_input_filter(webifilter,redirect_wmlInFilter,ifilter_init, AP_FTYPE_TRANSCODE );
}
Looking at the logs the instead of seeing the content body nameb=valueb , here what i get :
[Fri Oct 20 00:42:40 2006] [notice] (IN)\twebicookiet20 bytes - \x01\x8b\xa7\x1b
Maybe should i decode it before print it ??
Any suggestion will be appreciated
--