diff options
author | Martin Willi <martin@revosec.ch> | 2010-04-28 09:03:08 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2010-04-28 09:03:08 +0200 |
commit | 40fb7165a9d0dc64a9b221952b3fada51910deb8 (patch) | |
tree | 48bd865fa11268068a21950bc56ce20f6b761a6d /src | |
parent | 69e492f2e20063c1685afc1a00106bdf4cdcf090 (diff) | |
download | strongswan-40fb7165a9d0dc64a9b221952b3fada51910deb8.tar.bz2 strongswan-40fb7165a9d0dc64a9b221952b3fada51910deb8.tar.xz |
Reintroduce to_referer(), redirect() does not work with get_referer()
Diffstat (limited to 'src')
-rw-r--r-- | src/libfast/request.c | 20 | ||||
-rw-r--r-- | src/libfast/request.h | 5 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/libfast/request.c b/src/libfast/request.c index 2cbdd2ef8..6bf596fd8 100644 --- a/src/libfast/request.c +++ b/src/libfast/request.c @@ -245,6 +245,25 @@ static char* get_referer(private_request_t *this) } /** + * Implementation of request_t.to_referer. + */ +static void to_referer(private_request_t *this) +{ + char *referer; + + referer = get_referer(this); + if (referer) + { + FCGX_FPrintF(this->req.out, "Status: 303 See Other\n"); + FCGX_FPrintF(this->req.out, "Location: %s\n\n", referer); + } + else + { + redirect(this, "/"); + } +} + +/** * Implementation of request_t.session_closed. */ static bool session_closed(private_request_t *this) @@ -392,6 +411,7 @@ request_t *request_create(int fd, bool debug) this->public.close_session = (void(*)(request_t*))close_session; this->public.redirect = (void(*)(request_t*, char *fmt,...))redirect; this->public.get_referer = (char*(*)(request_t*))get_referer; + this->public.to_referer = (void(*)(request_t*))to_referer; this->public.render = (void(*)(request_t*,char*))render; this->public.streamf = (int(*)(request_t*, char *format, ...))streamf; this->public.serve = (void(*)(request_t*,char*,chunk_t))serve; diff --git a/src/libfast/request.h b/src/libfast/request.h index e77801800..af0f8e4f5 100644 --- a/src/libfast/request.h +++ b/src/libfast/request.h @@ -113,6 +113,11 @@ struct request_t { char* (*get_referer)(request_t *this); /** + * Redirect back to the referer. + */ + void (*to_referer)(request_t *this); + + /** * Set a template value. * * @param key key to set |