diff --git a/src/libfast/request.c b/src/libfast/request.c index 3f4894c45..0f743e3b9 100644 --- a/src/libfast/request.c +++ b/src/libfast/request.c @@ -231,6 +231,14 @@ static void redirect(private_request_t *this, char *fmt, ...) FCGX_FPrintF(this->req.out, "\n\n"); } +/** + * Implementation of request_t.get_referer. + */ +static char* get_referer(private_request_t *this) +{ + return FCGX_GetParam("HTTP_REFERER", this->req.envp); +} + /** * Implementation of request_t.to_referer. */ @@ -396,6 +404,7 @@ request_t *request_create(int fd, bool debug) 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; + 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; diff --git a/src/libfast/request.h b/src/libfast/request.h index 61e2d59f0..dd3b568a4 100644 --- a/src/libfast/request.h +++ b/src/libfast/request.h @@ -105,6 +105,13 @@ struct request_t { */ void (*redirect)(request_t *this, char *fmt, ...); + /** + * Get the HTTP referer. + * + * @return HTTP referer + */ + char* (*get_referer)(request_t *this); + /** * Redirect the client to the referer. */