On 04/04/2008 06:02 PM, [EMAIL PROTECTED] wrote:
Author: minfrin
Date: Fri Apr  4 09:02:22 2008
New Revision: 644748

URL: http://svn.apache.org/viewvc?rev=644748&view=rev
Log:
mod_session_cookie: Add a session implementation capable of storing
session information within cookies on the browser. Useful for high
volume sites where server bound sessions are too resource intensive.

Added:
    httpd/httpd/trunk/docs/manual/mod/mod_session_cookie.xml
    httpd/httpd/trunk/include/util_cookies.h
    httpd/httpd/trunk/modules/session/mod_session_cookie.c
    httpd/httpd/trunk/server/util_cookies.c
Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/session/config.m4
    httpd/httpd/trunk/server/Makefile.in


Added: httpd/httpd/trunk/modules/session/mod_session_cookie.c
URL: 
http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/session/mod_session_cookie.c?rev=644748&view=auto
==============================================================================
--- httpd/httpd/trunk/modules/session/mod_session_cookie.c (added)
+++ httpd/httpd/trunk/modules/session/mod_session_cookie.c Fri Apr  4 09:02:22 
2008


+/**
+ * Sanity check a given string that it exists, is not empty,
+ * and does not contain special characters.
+ */
+static const char *check_string(cmd_parms * cmd, const char *string)
+{
+    if (!string || !*string || ap_strchr_c(string, '=') || ap_strchr_c(string, 
'&')) {
+        return apr_pstrcat(cmd->pool, cmd->directive->directive,
+                           " cannot be empty, or contain '=' or '&'.",
+                           NULL);
+    }
+    return NULL;
+}

Why don't we use ap_cookie_check_string?

+
+static const char *set_cookie_name(cmd_parms * cmd, void *config, const char 
*args)
+{
+    char *last;
+    char *line = apr_pstrdup(cmd->pool, args);
+    session_cookie_dir_conf *conf = (session_cookie_dir_conf *) config;
+    char *cookie = apr_strtok(line, " \t", &last);
+    conf->name = cookie;

Don't we need to trim trailing spaces from the cookie name?


+    conf->name_set = 1;
+    while (apr_isspace(*last)) {
+        last++;
+    }
+    conf->name_attrs = last;
+    return check_string(cmd, cookie);
+}
+
+static const char *set_cookie_name2(cmd_parms * cmd, void *config, const char 
*args)
+{
+    char *last;
+    char *line = apr_pstrdup(cmd->pool, args);
+    session_cookie_dir_conf *conf = (session_cookie_dir_conf *) config;
+    char *cookie = apr_strtok(line, " \t", &last);
+    conf->name2 = cookie;

Don't we need to trim trailing spaces from the cookie name?

+    conf->name2_set = 1;
+    while (apr_isspace(*last)) {
+        last++;
+    }
+    conf->name2_attrs = last;
+    return check_string(cmd, cookie);
+}
+

Regards

RĂ¼diger

Reply via email to