OSDN Git Service

*** empty log message ***
authorkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Sun, 2 Jul 2006 02:01:43 +0000 (02:01 +0000)
committerkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Sun, 2 Jul 2006 02:01:43 +0000 (02:01 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/trunk@1426 1a406e8e-add9-4483-a2c8-d8cac5b7c224

16 files changed:
include/chxj_chtml10.h
include/chxj_chtml20.h
include/chxj_chtml30.h
include/chxj_cookie.h
include/chxj_hdml.h
include/chxj_jhtml.h
include/chxj_specified_device.h
include/chxj_xhtml_mobile_1_0.h
src/chxj_chtml10.c
src/chxj_chtml20.c
src/chxj_chtml30.c
src/chxj_cookie.c
src/chxj_hdml.c
src/chxj_jhtml.c
src/chxj_xhtml_mobile_1_0.c
src/mod_chxj.c

index 362303f..b81d910 100644 (file)
@@ -19,6 +19,7 @@
 
 /*#define DUMP_CHTML10 "" */
 #include "mod_chxj.h"
+#include "chxj_cookie.h"
 
 /*----------------------------------------------------------------------------*/
 /* Structure for HDML                                                         */
@@ -33,11 +34,11 @@ typedef struct _ctml10_t {
     device_table*      spec;
     mod_chxj_config*   conf;
     chxjconvrule_entry* entryp;
-    char*               cookie_id;
+    cookie_t*           cookie;
 } chtml10_t;
 
 /*----------------------------------------------------------------------------*/
 /* Prototype                                                                  */
 /*----------------------------------------------------------------------------*/
-char* chxj_exchange_chtml10( request_rec* r, device_table* spec, const char* src, apr_size_t srclen, apr_size_t *dstlen, chxjconvrule_entry* entryp, const char* cookie_id);
+char* chxj_exchange_chtml10( request_rec* r, device_table* spec, const char* src, apr_size_t srclen, apr_size_t *dstlen, chxjconvrule_entry* , cookie_t*);
 #endif
index f3f1b10..c299c33 100644 (file)
@@ -19,6 +19,8 @@
 
 /*#define DUMP_CHTML20 ""*/
 #include "mod_chxj.h"
+#include "chxj_cookie.h"
+
 /*----------------------------------------------------------------------------*/
 /* Structure for CHTML2.0                                                     */
 /*----------------------------------------------------------------------------*/
@@ -32,7 +34,7 @@ typedef struct _ctml20_t {
     device_table*      spec;
     mod_chxj_config*   conf;
     chxjconvrule_entry* entryp;
-    char*               cookie_id;
+    cookie_t*           cookie;
 } chtml20_t;
 
 /*----------------------------------------------------------------------------*/
@@ -46,5 +48,5 @@ chxj_exchange_chtml20(
                   apr_size_t srclen,
                   apr_size_t *dstlen,
                   chxjconvrule_entry* entryp,
-                  const char* cookie_id);
+                  cookie_t* cookie);
 #endif
index 4eb2189..efc4c53 100644 (file)
@@ -19,6 +19,8 @@
 
 /* #define DUMP_CHTML30 "" */
 #include "mod_chxj.h"
+#include "chxj_cookie.h"
+
 /*----------------------------------------------------------------------------*/
 /* Structure for CHTML3.0                                                     */
 /*----------------------------------------------------------------------------*/
@@ -32,7 +34,7 @@ typedef struct _chtml30_t {
     device_table*      spec;
     mod_chxj_config*   conf;
     chxjconvrule_entry* entryp;
-    char*               cookie_id;
+    cookie_t*           cookie;
 } chtml30_t;
 
 /*----------------------------------------------------------------------------*/
@@ -46,5 +48,5 @@ chxj_exchange_chtml30(
   apr_size_t      srclen,
   apr_size_t*     dstlen,
   chxjconvrule_entry* entryp,
-  const char* cookie_id);
+  cookie_t*           cookie);
 #endif
index 1cdeac3..f40972e 100644 (file)
 
 #define CHXJ_COOKIE_PARAM  "_chxj_cc"
 
-extern char* chxj_save_cookie(request_rec *r);
-extern char* chxj_add_cookie_parameter(request_rec* r, char* value, char* cookie_id);
+
+typedef struct cookie_t cookie_t;
+
+
+struct cookie_t {
+  char*               cookie_id;
+  apr_array_header_t* cookie_headers;
+};
+
+extern cookie_t* chxj_save_cookie(request_rec *r);
+extern char* chxj_add_cookie_parameter(request_rec* r, char* value, cookie_t* cookie);
 extern int chxj_cookie_check_host(request_rec* r, char* value);
-extern apr_array_header_t* chxj_load_cookie(request_rec* r, char* cookie_id);
+extern cookie_t* chxj_load_cookie(request_rec* r, char* cookie_id);
 extern apr_file_t* chxj_cookie_db_lock(request_rec* r);
 extern void chxj_cookie_db_unlock(request_rec* r, apr_file_t* file);
 
index e351789..7e92feb 100644 (file)
@@ -27,6 +27,7 @@
 #define END_LINE        "\0"
 
 #include "mod_chxj.h"
+#include "chxj_cookie.h"
 
 /*============================================================================*/
 /* Structure for HDML                                                         */
@@ -91,7 +92,7 @@ typedef struct _hdml_t {
   mod_chxj_config*  conf;
 
   chxjconvrule_entry* entryp;
-  char*               cookie_id;
+  cookie_t*           cookie;
 } hdml_t;
 /*============================================================================*/
 /* Prototype declaration.                                                     */
@@ -103,7 +104,7 @@ char* chxj_exchange_hdml(
   apr_size_t          srclen,
   apr_size_t*         dstlen,
   chxjconvrule_entry* entryp,
-  const char* cookie_id);
+  cookie_t* cookie);
 char* qs_out_apr_pstrcat(request_rec* r, char* o, char* s, int* len);
 char* qs_conv_istyle_to_format(request_rec* r, char* is);
 
index a14f1e1..8b43396 100644 (file)
@@ -32,7 +32,7 @@ typedef struct _jhtml_t {
     device_table*    spec;
     mod_chxj_config* conf;
     chxjconvrule_entry* entryp;
-    char*               cookie_id;
+    cookie_t*           cookie;
 } jhtml_t;
 
 /*----------------------------------------------------------------------------*/
@@ -46,5 +46,5 @@ chxj_exchange_jhtml(
   apr_size_t srclen,
   apr_size_t *dstlen,
   chxjconvrule_entry* entryp,
-  const char* cookie_id) ;
+  cookie_t* cookie) ;
 #endif
index 7e53893..fc19aa4 100644 (file)
@@ -34,6 +34,7 @@ typedef enum {
 #define CHXJ_PIC_NG                (0x00)
 
 #include "mod_chxj.h"
+#include "chxj_cookie.h"
 
 
 typedef struct _device_table_t {
@@ -91,7 +92,9 @@ typedef struct _device_table_list_t {
   device_table* tail;
 } device_table_list;
 
-typedef struct _converter_t {
+typedef struct converter_t converter_t;
+
+struct converter_t {
   /* convert routine */
   char* (*converter)(request_rec*               r,
                     struct _device_table_t*     spec,
@@ -99,12 +102,12 @@ typedef struct _converter_t {
                     apr_size_t                  srclen, 
                     apr_size_t*                 dstlen,
                     struct _chxjconvrule_entry* entryp,
-                    const char*                 cookie_id);
+                    cookie_t*                   cookie);
 
   char* (*encoder)(request_rec* r,
                    const char*  src,
                    apr_size_t*  len);
-} converter_t;
+};
 
 extern converter_t convert_routine[];
 
index 6020750..1a7f99c 100644 (file)
@@ -32,7 +32,7 @@ typedef struct _xhtml_t {
     device_table*    spec;
     mod_chxj_config*   conf;
     chxjconvrule_entry* entryp;
-    char*               cookie_id;
+    cookie_t*           cookie;
 } xhtml_t;
 
 /*----------------------------------------------------------------------------*/
@@ -45,6 +45,6 @@ char* chxj_exchange_xhtml_mobile_1_0(
   apr_size_t srclen,
   apr_size_t *dstlen,
   chxjconvrule_entry* entryp,
-  const char* cookie_id) ;
+  cookie_t* cookie) ;
 
 #endif
index e65e4c2..e212588 100644 (file)
@@ -316,7 +316,7 @@ chxj_exchange_chtml10(
   apr_size_t          srclen,
   apr_size_t*         dstlen,
   chxjconvrule_entry* entryp,
-  const char*         cookie_id
+  cookie_t*           cookie
 )
 {
   char*     dst;
@@ -326,7 +326,7 @@ chxj_exchange_chtml10(
 
   dst = NULL;
 
-  DBG1(r, "start chxj_exchange_chtml10() cookie_id=[%s]", cookie_id);
+  DBG1(r, "start chxj_exchange_chtml10() cookie_id=[%s]", cookie->cookie_id);
 
   /*--------------------------------------------------------------------------*/
   /* If qrcode xml                                                            */
@@ -344,7 +344,7 @@ chxj_exchange_chtml10(
   /*--------------------------------------------------------------------------*/
   s_init_chtml10(&chtml10, &doc, r, spec);
   chtml10.entryp    = entryp;
-  chtml10.cookie_id = (char*)cookie_id;
+  chtml10.cookie    = cookie;
 
   ap_set_content_type(r, "text/html; charset=Windows-31J");
 
@@ -385,7 +385,7 @@ chxj_exchange_chtml10(
   chxj_dump_out("[dst] CHTML -> CHTML1.0", dst, *dstlen);
 #endif
 
-  DBG1(r, "end   chxj_exchange_chtml10() cookie_id=[%s]", cookie_id);
+  DBG1(r, "end   chxj_exchange_chtml10() cookie_id=[%s]", cookie->cookie_id);
 
   return dst;
 }
@@ -1366,7 +1366,7 @@ s_chtml10_start_a_tag(void* pdoc, Node* node)
         /*----------------------------------------------------------------------*/
         /* CHTML1.0                                                             */
         /*----------------------------------------------------------------------*/
-        value = chxj_add_cookie_parameter(r, value, chtml10->cookie_id);
+        value = chxj_add_cookie_parameter(r, value, chtml10->cookie);
         
         chtml10->out = apr_pstrcat(r->pool, 
                         chtml10->out, 
@@ -1679,7 +1679,7 @@ s_chtml10_start_form_tag(void* pdoc, Node* node)
         /*----------------------------------------------------------------------*/
         /* CHTML 1.0                                                            */
         /*----------------------------------------------------------------------*/
-        value = chxj_add_cookie_parameter(r, value, chtml10->cookie_id);
+        value = chxj_add_cookie_parameter(r, value, chtml10->cookie);
   
         chtml10->out = apr_pstrcat(r->pool, 
                         chtml10->out, 
@@ -2106,12 +2106,12 @@ s_chtml10_start_img_tag(void* pdoc, Node* node)
         /* CHTML 1.0                                                            */
         /*----------------------------------------------------------------------*/
 #ifdef IMG_NOT_CONVERT_FILENAME
-        value = chxj_add_cookie_parameter(r, value, chtml10->cookie_id);
+        value = chxj_add_cookie_parameter(r, value, chtml10->cookie);
         chtml10->out = apr_pstrcat(r->pool, 
                         chtml10->out, " src=\"",value,"\"", NULL);
 #else
         value = chxj_img_conv(r, spec, value);
-        value = chxj_add_cookie_parameter(r, value, chtml10->cookie_id);
+        value = chxj_add_cookie_parameter(r, value, chtml10->cookie);
         chtml10->out = apr_pstrcat(r->pool, 
                         chtml10->out, " src=\"", 
                         value, 
index 6d593f5..7006711 100644 (file)
@@ -317,7 +317,7 @@ chxj_exchange_chtml20(
   apr_size_t srclen,
   apr_size_t *dstlen,
   chxjconvrule_entry* entryp,
-  const char* cookie_id
+  cookie_t* cookie
 )
 {
   char*     dst = NULL;
index 4955340..6cb59d6 100644 (file)
@@ -316,7 +316,7 @@ chxj_exchange_chtml30(
   apr_size_t srclen,
   apr_size_t *dstlen,
   chxjconvrule_entry* entryp,
-  const char* cookie_id
+  cookie_t* cookie
 )
 {
   char*     dst = NULL;
index d03f11c..6d54467 100644 (file)
@@ -31,11 +31,10 @@ static char* s_cut_until_end_hostname(request_rec*, char* value);
 /*
  *
  */
-char*
+cookie_t*
 chxj_save_cookie(request_rec* r)
 {
   int   ii;
-  char* cookie;
   apr_array_header_t* headers;
   apr_table_entry_t*  hentryp;
   apr_status_t        retval;
@@ -45,19 +44,21 @@ chxj_save_cookie(request_rec* r)
   apr_uuid_t        uuid;
   char*             uuid_string;
   unsigned char*    md5_value;
-  char*             md5_string;
   char*             old_cookie_id;
   mod_chxj_config*        dconf;
   chxjconvrule_entry* entryp;
   apr_file_t* file;
   apr_table_t*        new_cookie_table;
-  apr_array_header_t* old_cookie_headers;
   int                 has_cookie = 0;
+  cookie_t*           cookie;
+  cookie_t*           old_cookie;
 
 
   DBG(r, "start chxj_save_cookie()");
 
-  md5_string = NULL;
+  cookie = (cookie_t*)apr_palloc(r->pool, sizeof(cookie_t));
+
+  cookie->cookie_id = NULL;
 
   dconf = ap_get_module_config(r->per_dir_config, &chxj_module);
   entryp = chxj_apply_convrule(r, dconf->convrules);
@@ -75,9 +76,6 @@ chxj_save_cookie(request_rec* r)
   hentryp = (apr_table_entry_t*)headers->elts;
 
 
-  cookie = apr_palloc(r->pool, 1);
-  cookie[0] = 0;
-
   new_cookie_table = apr_table_make(r->pool, headers->nelts);
 
   for (ii=0; ii<headers->nelts; ii++) {
@@ -106,10 +104,10 @@ chxj_save_cookie(request_rec* r)
    */
   old_cookie_id = (char*)apr_table_get(r->headers_in, "CHXJ_COOKIE_ID");
   if (old_cookie_id) {
-    old_cookie_headers = chxj_load_cookie(r, old_cookie_id);
-    if (old_cookie_headers) {
-      hentryp = (apr_table_entry_t*)old_cookie_headers->elts;
-      for (ii=0; ii<old_cookie_headers->nelts; ii++) {
+    old_cookie = chxj_load_cookie(r, old_cookie_id); 
+    if (old_cookie && old_cookie->cookie_headers) {
+      hentryp = (apr_table_entry_t*)old_cookie->cookie_headers->elts;
+      for (ii=0; ii<old_cookie->cookie_headers->nelts; ii++) {
         if (apr_table_get(new_cookie_table, hentryp[ii].key) == NULL) {
           apr_table_setn(new_cookie_table, hentryp[ii].key, hentryp[ii].val);
           has_cookie = 1;
@@ -157,29 +155,29 @@ chxj_save_cookie(request_rec* r)
     goto on_error;
   }
 
-  md5_string = apr_palloc(r->pool, apr_base64_encode_len(APR_MD5_DIGESTSIZE)+1);
-  memset(md5_string, 0, APR_MD5_DIGESTSIZE+1);
-  apr_base64_encode(md5_string, (char*)md5_value, APR_MD5_DIGESTSIZE);
+  cookie->cookie_id = apr_palloc(r->pool, apr_base64_encode_len(APR_MD5_DIGESTSIZE)+1);
+  memset(cookie->cookie_id, 0, APR_MD5_DIGESTSIZE+1);
+  apr_base64_encode(cookie->cookie_id, (char*)md5_value, APR_MD5_DIGESTSIZE);
 
-  DBG1(r, "md5_string=[%s]", md5_string);
+  DBG1(r, "cookie->cookie_id=[%s]", cookie->cookie_id);
 
-  md5_string = chxj_url_encode(r,md5_string);
+  cookie->cookie_id = chxj_url_encode(r,cookie->cookie_id);
 
-  DBG1(r, "md5_string=[%s]", md5_string);
+  DBG1(r, "cookie->cookie_id=[%s]", cookie->cookie_id);
 
   /*
    * create key
    */
 
-  dbmkey.dptr  = md5_string;
-  dbmkey.dsize = strlen(md5_string);
+  dbmkey.dptr  = cookie->cookie_id;
+  dbmkey.dsize = strlen(cookie->cookie_id);
 
   /*
    * create val
    */
-  headers = (apr_array_header_t*)apr_table_elts(new_cookie_table);
-  dbmval.dptr  = (char*)headers;
-  dbmval.dsize = headers->elt_size * headers->nelts + sizeof(apr_array_header_t);
+  cookie->cookie_headers = (apr_array_header_t*)apr_table_elts(new_cookie_table);
+  dbmval.dptr  = (char*)cookie->cookie_headers;
+  dbmval.dsize = cookie->cookie_headers->elt_size * cookie->cookie_headers->nelts + sizeof(apr_array_header_t);
 
   /*
    * store to db
@@ -196,14 +194,14 @@ on_error:
   chxj_cookie_db_unlock(r, file);
 
   DBG(r, "end   chxj_save_cookie()");
-  return md5_string;
+  return cookie;
 }
 
 /*
  *
  * @return loaded data.
  */
-apr_array_header_t*
+cookie_t*
 chxj_load_cookie(request_rec* r, char* cookie_id)
 {
   int ii;
@@ -215,14 +213,16 @@ chxj_load_cookie(request_rec* r, char* cookie_id)
   mod_chxj_config*        dconf;
   chxjconvrule_entry* entryp;
   apr_file_t*       file;
-  apr_array_header_t* cookie_headers;
   apr_table_entry_t*  hentryp;
+  cookie_t*           cookie;
 
 
 
   DBG(r, "start chxj_load_cookie()");
 
-  cookie_headers = NULL;
+  cookie = (cookie_t*)apr_palloc(r->pool, sizeof(cookie_t));
+  cookie->cookie_headers = NULL;
+  cookie->cookie_id = apr_pstrdup(r->pool, cookie_id);
 
 
   gconf = ap_get_module_config(r->server->module_config, &chxj_module);
@@ -259,7 +259,7 @@ chxj_load_cookie(request_rec* r, char* cookie_id)
   /*
    * create key
    */
-  dbmkey.dptr  = apr_pstrdup(r->pool, cookie_id);
+  dbmkey.dptr  = apr_pstrdup(r->pool, cookie->cookie_id);
   dbmkey.dsize = strlen(dbmkey.dptr);
 
   retval = apr_dbm_fetch(f, dbmkey, &dbmval);
@@ -267,11 +267,11 @@ chxj_load_cookie(request_rec* r, char* cookie_id)
     ERR2(r, "could not fetch dbm (type %s) auth file: %s", "default", "/tmp/cookie.db");
     goto on_error;
   }
-  cookie_headers = (apr_array_header_t*)dbmval.dptr;
+  cookie->cookie_headers = (apr_array_header_t*)dbmval.dptr;
 
-  hentryp = (apr_table_entry_t*)cookie_headers->elts;
+  hentryp = (apr_table_entry_t*)cookie->cookie_headers->elts;
 
-  for (ii=0; ii<cookie_headers->nelts; ii++) {
+  for (ii=0; ii<cookie->cookie_headers->nelts; ii++) {
     DBG2(r, "cookie=[%s:%s]", hentryp[ii].key, hentryp[ii].val);
 
     apr_table_setn(r->headers_in, "Cookie", apr_pstrcat(r->pool, hentryp[ii].key, "=", hentryp[ii].val, NULL));
@@ -282,25 +282,27 @@ chxj_load_cookie(request_rec* r, char* cookie_id)
   /*
    * save cookie_id to request header.
    */
-  apr_table_setn(r->headers_in, "CHXJ_COOKIE_ID", cookie_id);
+  apr_table_setn(r->headers_in, "CHXJ_COOKIE_ID", cookie->cookie_id);
   DBG(r, " ");
 
 on_error:
   chxj_cookie_db_unlock(r, file);
 
   DBG(r, "end   chxj_load_cookie()");
-  return cookie_headers;
+  return cookie;
 }
 
 
 char*
-chxj_add_cookie_parameter(request_rec* r, char* value, char* cookie_id)
+chxj_add_cookie_parameter(request_rec* r, char* value, cookie_t* cookie)
 {
   char* qs;
   char* dst;
 
-  DBG1(r, "start chxj_add_cookie_parameter() cookie_id=[%s]", cookie_id);
-  if (!cookie_id) return value;
+  DBG1(r, "start chxj_add_cookie_parameter() cookie_id=[%s]", (cookie) ? cookie->cookie_id : NULL);
+
+  if (!cookie) return value;
+  if (!cookie->cookie_id) return value;
   if (chxj_cookie_check_host(r, value) != 0) {
     DBG(r, "end chxj_add_cookie_parameter()(check host)");
     return value;
@@ -310,10 +312,10 @@ chxj_add_cookie_parameter(request_rec* r, char* value, char* cookie_id)
 
   qs = strchr(dst, '?');
   if (qs) {
-    dst = apr_psprintf(r->pool, "%s&%s=%s", dst, CHXJ_COOKIE_PARAM, cookie_id);
+    dst = apr_psprintf(r->pool, "%s&%s=%s", dst, CHXJ_COOKIE_PARAM, cookie->cookie_id);
   }
   else {
-    dst = apr_psprintf(r->pool, "%s?%s=%s", dst, CHXJ_COOKIE_PARAM, cookie_id);
+    dst = apr_psprintf(r->pool, "%s?%s=%s", dst, CHXJ_COOKIE_PARAM, cookie->cookie_id);
   }
 
   DBG1(r, "end   chxj_add_cookie_parameter() dst=[%s]", dst);
index ea18b2e..1a5bd0e 100644 (file)
@@ -317,7 +317,7 @@ chxj_exchange_hdml(
   apr_size_t srclen, 
   apr_size_t* dstlen,
   chxjconvrule_entry* entryp,
-  const char* cookie_id
+  cookie_t* cookie
 )
 {
   char*     dst = NULL;
index 46e010a..9f39296 100644 (file)
@@ -308,7 +308,7 @@ chxj_exchange_jhtml(
   apr_size_t srclen,
   apr_size_t *dstlen,
   chxjconvrule_entry* entryp,
-  const char* cookie_id
+  cookie_t* cookie
 )
 {
   char*     dst = NULL;
index c20f299..1e601ed 100644 (file)
@@ -318,7 +318,7 @@ chxj_exchange_xhtml_mobile_1_0(
   apr_size_t      srclen,
   apr_size_t*     dstlen,
   chxjconvrule_entry* entryp,
-  const char* cookie_id
+  cookie_t*   cookie
 )
 {
   char*     dst = NULL;
index b0751a1..9768352 100644 (file)
@@ -192,7 +192,7 @@ chxj_exchange(request_rec *r, const char** src, apr_size_t* len)
   char*               user_agent;
   char*               dst;
   char*               tmp;
-  char*               cookie_id;
+  cookie_t*           cookie;
   mod_chxj_config*    dconf; 
   chxjconvrule_entry* entryp;
 
@@ -229,9 +229,9 @@ chxj_exchange(request_rec *r, const char** src, apr_size_t* len)
   /*
    * save cookie.
    */
-  cookie_id = NULL;
+  cookie = NULL;
   if (entryp->action & CONVRULE_COOKIE_ON_BIT)
-    cookie_id = chxj_save_cookie(r);
+    cookie = chxj_save_cookie(r);
 
   if (!r->header_only) {
     device_table* spec = chxj_specified_device(r, user_agent);
@@ -250,7 +250,7 @@ chxj_exchange(request_rec *r, const char** src, apr_size_t* len)
                                                               *len, 
                                                               len, 
                                                               entryp, 
-                                                              cookie_id);
+                                                              cookie);
       else
         dst = convert_routine[spec->html_spec_type].converter(r,
                                                               spec, 
@@ -258,7 +258,7 @@ chxj_exchange(request_rec *r, const char** src, apr_size_t* len)
                                                               *len, 
                                                               len, 
                                                               entryp, 
-                                                              cookie_id);
+                                                              cookie);
     }
   }
 
@@ -311,6 +311,7 @@ chxj_convert_input_header(request_rec *r,chxjconvrule_entry* entryp)
   /* _chxj_r_ */
   /* _chxj_s_ */
   for (;;) {
+    char* pair_sv;
 
     pair = apr_strtok(buff, "&", &pstate);
     if (pair == NULL)
@@ -318,6 +319,8 @@ chxj_convert_input_header(request_rec *r,chxjconvrule_entry* entryp)
 
     buff = NULL;
 
+    pair_sv = apr_pstrdup(r->pool, pair);
+
     name  = apr_strtok(pair, "=", &vstate);
     value = apr_strtok(NULL, "=", &vstate);
     if (strncasecmp(name, "_chxj", 5) != 0) {
@@ -340,7 +343,7 @@ chxj_convert_input_header(request_rec *r,chxjconvrule_entry* entryp)
         result = apr_pstrcat(r->pool, result, name, "=", dvalue, NULL);
       }
       else {
-        if (strcmp(name, pair) != 0)
+        if (strcmp(name, pair_sv) != 0)
           result = apr_pstrcat(r->pool, result, name, "=", value, NULL);
         else
           result = apr_pstrcat(r->pool, result, name, NULL);
@@ -541,7 +544,7 @@ chxj_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
   char*               contentLength;
   apr_size_t          len;
   mod_chxj_ctx*       ctx;
-  char*               cookie_id;
+  cookie_t*           cookie;
   char*               location_header;
   mod_chxj_config*    dconf;
   chxjconvrule_entry* entryp;
@@ -656,7 +659,7 @@ chxj_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
         if (entryp->action & CONVRULE_COOKIE_ON_BIT) {
           DBG(r, "entryp->action == COOKIE_ON_BIT");
 
-          cookie_id = chxj_save_cookie(r);
+          cookie = chxj_save_cookie(r);
 
           /*
            * Location Header Check to add cookie parameter.
@@ -666,7 +669,7 @@ chxj_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
             DBG1(r, "Location Header=[%s]", location_header);
             location_header = chxj_add_cookie_parameter(r,
                                                         location_header,
-                                                        cookie_id);
+                                                        cookie);
             apr_table_setn(r->headers_out, "Location", location_header);
             DBG1(r, "Location Header=[%s]", location_header);
           }