#include "http_log.h"
#include "util_cookies.h"
-#define LOG_PREFIX "mod_session_cookie: "
#define MOD_SESSION_COOKIE "mod_session_cookie"
module AP_MODULE_DECLARE_DATA session_cookie_module;
int remove_set;
} session_cookie_dir_conf;
-AP_DECLARE(int) ap_session_cookie_save(request_rec * r, session_rec * z);
-AP_DECLARE(int) ap_session_cookie_load(request_rec * r, session_rec ** z);
-
/**
* Set the cookie and embed the session within it.
*
* @param r The request pointer.
* @param z A pointer to where the session will be written.
*/
-AP_DECLARE(int) ap_session_cookie_save(request_rec * r, session_rec * z)
+static apr_status_t session_cookie_save(request_rec * r, session_rec * z)
{
session_cookie_dir_conf *conf = ap_get_module_config(r->per_dir_config,
&session_cookie_module);
- /* don't cache auth protected pages */
- apr_table_addn(r->headers_out, "Cache-Control", "no-cache");
-
/* create RFC2109 compliant cookie */
if (conf->name_set) {
if (z->encoded && z->encoded[0]) {
- ap_cookie_write(r, conf->name, z->encoded, conf->name_attrs, z->maxage);
+ ap_cookie_write(r, conf->name, z->encoded, conf->name_attrs,
+ z->maxage, r->err_headers_out,
+ NULL);
}
else {
- ap_cookie_remove(r, conf->name);
+ ap_cookie_remove(r, conf->name, conf->name_attrs, r->headers_out,
+ r->err_headers_out, NULL);
}
}
/* create RFC2965 compliant cookie */
if (conf->name2_set) {
if (z->encoded && z->encoded[0]) {
- ap_cookie_write2(r, conf->name2, z->encoded, conf->name2_attrs, z->maxage);
+ ap_cookie_write2(r, conf->name2, z->encoded, conf->name2_attrs,
+ z->maxage, r->err_headers_out,
+ NULL);
}
else {
- ap_cookie_remove2(r, conf->name2);
+ ap_cookie_remove2(r, conf->name2, conf->name2_attrs,
+ r->headers_out, r->err_headers_out, NULL);
}
}
*
* On success, this returns APR_SUCCESS.
*/
-AP_DECLARE(int) ap_session_cookie_load(request_rec * r, session_rec ** z)
+static apr_status_t session_cookie_load(request_rec * r, session_rec ** z)
{
session_cookie_dir_conf *conf = ap_get_module_config(r->per_dir_config,
}
/* first look in the notes */
- note = apr_pstrcat(r->pool, MOD_SESSION_COOKIE, name, NULL);
+ note = apr_pstrcat(m->pool, MOD_SESSION_COOKIE, name, NULL);
zz = (session_rec *)apr_table_get(m->notes, note);
if (zz) {
*z = zz;
ap_cookie_read(r, name, &val, conf->remove);
/* create a new session and return it */
- zz = (session_rec *) apr_pcalloc(r->pool, sizeof(session_rec));
- zz->pool = r->pool;
- zz->entries = apr_table_make(r->pool, 10);
+ zz = (session_rec *) apr_pcalloc(m->pool, sizeof(session_rec));
+ zz->pool = m->pool;
+ zz->entries = apr_table_make(m->pool, 10);
zz->encoded = val;
- zz->uuid = (apr_uuid_t *) apr_pcalloc(r->pool, sizeof(apr_uuid_t));
*z = zz;
/* put the session in the notes so we don't have to parse it again */
apr_table_setn(m->notes, note, (char *)zz);
+ /* don't cache auth protected pages */
+ apr_table_addn(r->headers_out, "Cache-Control", "no-cache, private");
+
return OK;
}
return (void *) new;
}
-static void *merge_session_cookie_dir_config(apr_pool_t * p, void *basev, void *addv)
+static void *merge_session_cookie_dir_config(apr_pool_t * p, void *basev,
+ void *addv)
{
- session_cookie_dir_conf *new = (session_cookie_dir_conf *) apr_pcalloc(p, sizeof(session_cookie_dir_conf));
+ session_cookie_dir_conf *new = (session_cookie_dir_conf *)
+ apr_pcalloc(p, sizeof(session_cookie_dir_conf));
session_cookie_dir_conf *add = (session_cookie_dir_conf *) addv;
session_cookie_dir_conf *base = (session_cookie_dir_conf *) basev;
return NULL;
}
-static const char *set_cookie_name(cmd_parms * cmd, void *config, const char *args)
+static const char *set_cookie_name(cmd_parms * cmd, void *config,
+ const char *args)
{
char *last;
char *line = apr_pstrdup(cmd->pool, args);
return check_string(cmd, cookie);
}
-static const char *set_cookie_name2(cmd_parms * cmd, void *config, const char *args)
+static const char *set_cookie_name2(cmd_parms * cmd, void *config,
+ const char *args)
{
char *last;
char *line = apr_pstrdup(cmd->pool, args);
static void register_hooks(apr_pool_t * p)
{
- ap_hook_session_load(ap_session_cookie_load, NULL, NULL, APR_HOOK_MIDDLE);
- ap_hook_session_save(ap_session_cookie_save, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_session_load(session_cookie_load, NULL, NULL, APR_HOOK_MIDDLE);
+ ap_hook_session_save(session_cookie_save, NULL, NULL, APR_HOOK_MIDDLE);
}
-module AP_MODULE_DECLARE_DATA session_cookie_module =
+AP_DECLARE_MODULE(session_cookie) =
{
STANDARD20_MODULE_STUFF,
create_session_cookie_dir_config, /* dir config creater */