httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Arturo 'Buanzo' Busleiman <bua...@buanzo.com.ar>
Subject read POST body
Date Thu, 12 Apr 2007 17:05:59 GMT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hi group!

For mod_auth_openpgp I need to read the POST body. During my research (googling, archives
of this
list, apache.org, etc) I discovered three methods so far. I would like your opinions on the
safest
one, fastest one, if should DECHUNK, how much to allow for post size allocation (probably
a
configuration option, but i'd need a default value...).

This is what I got: anything you can think of would be of GREAT help:

Getting REQUEST BODY: (1)
============================

	ap_setup_client_block(r, REQUEST_CHUNKED_DECHUNK);
	
	char buffer[1024];

	if ( ap_should_client_block(r) == 1 ) {
		while ( ap_get_client_block(r, buffer, 1024) > 0 ) {
			ap_rputs("Reading in buffer...<br>",r);
			ap_rputs(buffer,r);
		}
	} else {
		ap_rputs("Nothing to read...<br>",r);
	}

Getting REQUEST BODY: (2)
============================

http://httpd.apache.org/apreq/

Getting REQUEST BODY: (3)
============================
static int util_read(request_rec *r, const char **rbuf)
{
   int rc;

    if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)) != OK) {
       return rc;
   }

    if (ap_should_client_block(r)) {
       char argsbuffer[HUGE_STRING_LEN];
      int rsize, len_read, rpos=0;
      long length = r->remaining;
      *rbuf = ap_pcalloc(r->pool, length + 1);

       ap_hard_timeout("util_read", r);

       while ((len_read =
               ap_get_client_block(r, argsbuffer, sizeof(argsbuffer))) > 0) {
          ap_reset_timeout(r);
          if ((rpos + len_read) > length) {
              rsize = length - rpos;
          }
          else {
              rsize = len_read;
          }
          memcpy((char*)*rbuf + rpos, argsbuffer, rsize);
          rpos += rsize;
      }

       ap_kill_timeout(r);
    }
   return rc;
}

- --
Arturo "Buanzo" Busleiman - Consultor Independiente en Seguridad Informatica
Foros GNU/Buanzo: Respeto, Soluciones y Buena Onda: http://foros.buanzo.com.ar
Consulting and Secure Mail Hosting: http://www.buanzo.com.ar/pro/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGHmb3AlpOsGhXcE0RClVRAJ95UqidCJcSXqmdWMGupuNahdBk/QCfb5KO
R5y+G2NbAFGUIvHYytfHxb4=
=xxOM
-----END PGP SIGNATURE-----

Mime
View raw message