httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Frédéric Laurendeau <frederic.laurend...@gmail.com>
Subject Using aprec in a handler to retrieve request body
Date Tue, 16 Feb 2010 10:24:16 GMT
Hi,

I am trying to write a module which will get the request body, process it
and write generated content in the response.
I have seen that some of you used aprec to get the request body but I just
cannot manage to build my module with it. I'm using apxs to build my module
and after the build, there is an error when trying to start apache2 with my
module: "Cannot load mod_maquette.so into server: undefined symbol:
apreq_params_as_string"

I put at the bottom of the mail my source code and my build script, maybe I
forgot to include some headers in the source or some libraries in the build
command line ?

I don't really understand how all of this works but aprec seems very
powerfull and I'd like to find some tutorials or examples on how to build
modules with it.

Thanks for your help.

Frederic

Build script :
/usr/local/apache2/bin/apxs -c mod_maquette.c
/usr/local/apache2/bin/apxs -i -a -n maquette mod_maquette.la


Source code mod_maquette.c:
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "httpd.h"
#include "http_connection.h"
#include "http_config.h"
#include "http_core.h"
#include "http_log.h"
#include "http_protocol.h"
#include "ap_config.h"
#include "http_request.h"
#include "apr.h"
#include "apr_strings.h"
#include "apr_lib.h"
#include "apreq2/apreq_module.h"
#include "apreq2/apreq_param.h"

static int maquette_handler(request_rec *r)
{
const apr_table_t* args;
apreq_handle_t* h = apreq_handle_apache2(r);
apreq_body(h, &args);
const char *params = apreq_params_as_string(r->pool, args, NULL,
APREQ_JOIN_QUOTE);

fprintf(stderr, "=====TEST=====\n%s\n======TEST=====\n", params );
ap_rprintf(r, "Request data read : %s\n", params);
fflush(stderr);
 return DONE;
}

static void register_hooks(apr_pool_t *p)
{
ap_hook_handler(maquette_handler, NULL, NULL, APR_HOOK_MIDDLE);
}

module AP_MODULE_DECLARE_DATA maquette_module =
{
    STANDARD20_MODULE_STUFF,
    NULL,             /* dir config creater */
    NULL,             /* dir merger --- default is to override */
    NULL,             /* server config */
    NULL,             /* merge server configs */
    NULL,             /* command apr_table_t */
    register_hooks,   /* register hooks */
};

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message