diff options
author | Martin Willi <martin@revosec.ch> | 2010-05-27 09:30:14 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2010-05-27 09:30:14 +0200 |
commit | ddf29f5b07cfb8c75381477de91435f12736f241 (patch) | |
tree | 721c2e3942ff2415a880d9248650e36ecbe837b8 /src | |
parent | f00a1015904c3718fa6a186d3e5a9b209227d76e (diff) | |
download | strongswan-ddf29f5b07cfb8c75381477de91435f12736f241.tar.bz2 strongswan-ddf29f5b07cfb8c75381477de91435f12736f241.tar.xz |
Added support for reading raw PUT/POST data from HTTP request
Diffstat (limited to 'src')
-rw-r--r-- | src/libfast/request.c | 9 | ||||
-rw-r--r-- | src/libfast/request.h | 9 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/libfast/request.c b/src/libfast/request.c index 6bf596fd8..16c1ae583 100644 --- a/src/libfast/request.c +++ b/src/libfast/request.c @@ -204,6 +204,14 @@ static char* get_query_data(private_request_t *this, char *name) } /** + * Implementation of request_t.read_data. + */ +static int read_data(private_request_t *this, char *buf, int len) +{ + return FCGX_GetStr(buf, len, this->req.in); +} + +/** * Implementation of request_t.get_base. */ static char* get_base(private_request_t *this) @@ -407,6 +415,7 @@ request_t *request_create(int fd, bool debug) this->public.add_cookie = (void(*)(request_t*, char *name, char *value))add_cookie; this->public.get_cookie = (char*(*)(request_t*,char*))get_cookie; this->public.get_query_data = (char*(*)(request_t*, char *name))get_query_data; + this->public.read_data = (int(*)(request_t*, char*, int))read_data; this->public.session_closed = (bool(*)(request_t*))session_closed; this->public.close_session = (void(*)(request_t*))close_session; this->public.redirect = (void(*)(request_t*, char *fmt,...))redirect; diff --git a/src/libfast/request.h b/src/libfast/request.h index af0f8e4f5..9ca74a91e 100644 --- a/src/libfast/request.h +++ b/src/libfast/request.h @@ -86,6 +86,15 @@ struct request_t { char* (*get_query_data)(request_t *this, char *name); /** + * Read raw POST/PUT data from HTTP request. + * + * @param buf buffer to read data into + * @param len size of the supplied buffer + * @return number of bytes read, < 0 on error + */ + int (*read_data)(request_t *this, char *buf, int len); + + /** * Close the session and it's context after handling. */ void (*close_session)(request_t *this); |