Reintroduce to_referer(), redirect() does not work with get_referer()
This commit is contained in:
@@ -244,6 +244,25 @@ static char* get_referer(private_request_t *this)
|
|||||||
return FCGX_GetParam("HTTP_REFERER", this->req.envp);
|
return FCGX_GetParam("HTTP_REFERER", this->req.envp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.
|
* Implementation of request_t.session_closed.
|
||||||
*/
|
*/
|
||||||
@@ -392,6 +411,7 @@ request_t *request_create(int fd, bool debug)
|
|||||||
this->public.close_session = (void(*)(request_t*))close_session;
|
this->public.close_session = (void(*)(request_t*))close_session;
|
||||||
this->public.redirect = (void(*)(request_t*, char *fmt,...))redirect;
|
this->public.redirect = (void(*)(request_t*, char *fmt,...))redirect;
|
||||||
this->public.get_referer = (char*(*)(request_t*))get_referer;
|
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.render = (void(*)(request_t*,char*))render;
|
||||||
this->public.streamf = (int(*)(request_t*, char *format, ...))streamf;
|
this->public.streamf = (int(*)(request_t*, char *format, ...))streamf;
|
||||||
this->public.serve = (void(*)(request_t*,char*,chunk_t))serve;
|
this->public.serve = (void(*)(request_t*,char*,chunk_t))serve;
|
||||||
|
|||||||
@@ -112,6 +112,11 @@ struct request_t {
|
|||||||
*/
|
*/
|
||||||
char* (*get_referer)(request_t *this);
|
char* (*get_referer)(request_t *this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Redirect back to the referer.
|
||||||
|
*/
|
||||||
|
void (*to_referer)(request_t *this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a template value.
|
* Set a template value.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user