OSDN Git Service

* updated copyright.
[modchxj/mod_chxj.git] / src / chxj_cookie.c
index 756f09c..13cdead 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005-2009 Atsushi Konno All rights reserved.
+ * Copyright (C) 2005-2011 Atsushi Konno All rights reserved.
  * Copyright (C) 2005 QSDN,Inc. All rights reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -92,11 +92,11 @@ alloc_cookie_id(request_rec *r)
   memset(cookie_id, 0, APR_MD5_DIGESTSIZE+1);
   apr_base64_encode(cookie_id, (char*)md5_value, APR_MD5_DIGESTSIZE);
 
-  DBG(r, "cookie_id=[%s]", cookie_id);
+  DBG(r, "REQ[%X] cookie_id=[%s]", TO_ADDR(r),cookie_id);
 
   cookie_id = chxj_url_encode(r->pool,cookie_id);
 
-  DBG(r, "cookie_id=[%s]", cookie_id);
+  DBG(r, "REQ[%X] cookie_id=[%s]", TO_ADDR(r), cookie_id);
   return cookie_id;
 }
 
@@ -126,7 +126,7 @@ chxj_save_cookie(request_rec *r)
   apr_pool_t          *pool;
 
 
-  DBG(r, "start chxj_save_cookie()");
+  DBG(r, "REQ[%X] start %s()",TO_ADDR(r),__func__);
 
   apr_pool_create(&pool, r->pool);
 
@@ -139,11 +139,11 @@ chxj_save_cookie(request_rec *r)
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
   entryp = chxj_apply_convrule(r, dconf->convrules);
   if (! entryp) {
-    DBG(r, "end chxj_save_cookie() no pattern");
+    DBG(r, "REQ[%X] end %s() (no pattern)",TO_ADDR(r),__func__);
     return NULL;
   }
-  if (! (entryp->action & CONVRULE_COOKIE_ON_BIT)) {
-    DBG(r, "end chxj_save_cookie() CookieOff");
+  if (! (entryp->action & CONVRULE_COOKIE_ON_BIT) && ! (entryp->action & CONVRULE_COOKIE_ONLY_BIT)) {
+    DBG(r, "REQ[%X] end %s() (CookieOff)",TO_ADDR(r),__func__);
     return NULL;
   }
 
@@ -217,7 +217,7 @@ chxj_save_cookie(request_rec *r)
       refer_string = apr_pstrcat(pool, refer_string, "?", r->args, NULL);
     }
     apr_table_setn(new_cookie_table, REFERER_COOKIE_KEY, refer_string);
-    DBG(r, "ADD REFER[%s]", refer_string);
+    DBG(r, "REQ[%X] ADD REFER[%s]", TO_ADDR(r),refer_string);
     has_cookie++;
   }
 
@@ -245,7 +245,7 @@ chxj_save_cookie(request_rec *r)
 
 
   if (! has_cookie) {
-    DBG(r, "REQ[%X] end chxj_save_cookie() (no cookie)", (unsigned int)(apr_size_t)r);
+    DBG(r, "REQ[%X] end %s() (no cookie)", TO_ADDR(r),__func__);
     return NULL;
   }
 
@@ -273,32 +273,35 @@ chxj_save_cookie(request_rec *r)
   }
 
   if (old_cookie_id && IS_COOKIE_LAZY(dconf)) {
-    DBG(r, "REQ[%X] LAZY COOKIE save",(unsigned int)(apr_size_t)r);
+    DBG(r, "REQ[%X] LAZY COOKIE save",TO_ADDR(r));
     cookie->cookie_id = apr_pstrdup(r->pool, old_cookie_id);
   }
   else if (old_cookie_id && apr_table_get(r->headers_in, "X-Chxj-Cookie-No-Update")) {
-    DBG(r, "REQ[%X] NO UPDATE MODE",(unsigned int)(apr_size_t)r);
+    DBG(r, "REQ[%X] NO UPDATE MODE",TO_ADDR(r));
     cookie->cookie_id = apr_pstrdup(r->pool, old_cookie_id);
   }
   else {
     if (old_cookie_id && apr_table_get(r->headers_in, "X-Chxj-Forward")) {
-      DBG(r, "REQ[%X] NO LAZY COOKIE(X-Chxj-Forward)  save",(unsigned int)(apr_size_t)r);
+      DBG(r, "REQ[%X] NO LAZY COOKIE(X-Chxj-Forward)  save",TO_ADDR(r));
       cookie->cookie_id = apr_pstrdup(r->pool, old_cookie_id);
     }
     else {
-      DBG(r, "REQ[%X] NO LAZY COOKIE save",(unsigned int)(apr_size_t)r);
+      DBG(r, "REQ[%X] NO LAZY COOKIE save",TO_ADDR(r));
       cookie->cookie_id = alloc_cookie_id(r);
     }
   }
 
-  DBG(r, "REQ[%X] TYPE:[%d]", (unsigned int)(apr_size_t)r, dconf->cookie_store_type);
+  DBG(r, "REQ[%X] TYPE:[%d]", TO_ADDR(r), dconf->cookie_store_type);
+  DBG(r, "REQ[%X] STORE STRING:=======================================================", TO_ADDR(r));
+  DBG(r, "REQ[%X] [%s]", TO_ADDR(r), store_string);
+  DBG(r, "REQ[%X] =======================================================:STORE STRING", TO_ADDR(r));
 
   {
     int done_proc = 0;
 #if defined(USE_MYSQL_COOKIE)
     if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
       if (! chxj_save_cookie_mysql(r, dconf, cookie->cookie_id, store_string)) {
-        ERR(r, "%s:%d faild: chxj_save_cookie_mysql() cookie_id:[%s]", APLOG_MARK,cookie->cookie_id);
+        ERR(r, "REQ[%X] %s:%d faild: chxj_save_cookie_mysql() cookie_id:[%s]", TO_ADDR(r), APLOG_MARK,cookie->cookie_id);
         cookie = NULL;
         goto on_error;
       }
@@ -308,7 +311,7 @@ chxj_save_cookie(request_rec *r)
 #if defined(USE_MEMCACHE_COOKIE)
     if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
       if (! chxj_save_cookie_memcache(r, dconf, cookie->cookie_id, store_string)) {
-        ERR(r, "%s:%d failed: chxj_save_cookie_memcache() cookie_id:[%s]", APLOG_MARK, cookie->cookie_id);
+        ERR(r, "REQ[%X] %s:%d failed: chxj_save_cookie_memcache() cookie_id:[%s]", TO_ADDR(r),APLOG_MARK, cookie->cookie_id);
         cookie = NULL;
         goto on_error;
       }
@@ -317,7 +320,7 @@ chxj_save_cookie(request_rec *r)
 #endif
     if (IS_COOKIE_STORE_DBM(dconf->cookie_store_type) || ! done_proc) {
       if (! chxj_save_cookie_dbm(r, dconf, cookie->cookie_id, store_string)) {
-        ERR(r, "%s:%d failed: chxj_save_cookie_dbm() cookie_id:[%s]", APLOG_MARK, cookie->cookie_id);
+        ERR(r, "REQ[%X] %s:%d failed: chxj_save_cookie_dbm() cookie_id:[%s]", TO_ADDR(r),APLOG_MARK, cookie->cookie_id);
         cookie = NULL;
         goto on_error;
       }
@@ -331,7 +334,7 @@ chxj_save_cookie(request_rec *r)
   }
 
 on_error:
-  DBG(r, "end chxj_save_cookie()");
+  DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
   return cookie;
 }
 
@@ -352,9 +355,9 @@ chxj_update_cookie(request_rec *r, cookie_t *old_cookie)
   cookie_t            *cookie;
 
 
-  DBG(r, "start chxj_update_cookie()");
+  DBG(r, "REQ[%X] start %s()",TO_ADDR(r),__func__);
   if (!old_cookie || ! old_cookie->cookie_headers || ! old_cookie->cookie_id) {
-    DBG(r, "end chxj_update_cookie() (old_cookie is null)");
+    DBG(r, "REQ[%X] end %s() (old_cookie is null)",TO_ADDR(r),__func__);
     return  NULL;
   }
 
@@ -364,11 +367,11 @@ chxj_update_cookie(request_rec *r, cookie_t *old_cookie)
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
   entryp = chxj_apply_convrule(r, dconf->convrules);
   if (! entryp) {
-    DBG(r, "end chxj_update_cookie() no pattern");
+    DBG(r, "REQ[%X] end %s() (no pattern)",TO_ADDR(r),__func__);
     return NULL;
   }
   if (! (entryp->action & CONVRULE_COOKIE_ON_BIT)) {
-    DBG(r, "end chxj_update_cookie() CookieOff");
+    DBG(r, "REQ[%X] end %s() (CookieOff)",TO_ADDR(r),__func__);
     return NULL;
   }
 
@@ -379,11 +382,11 @@ chxj_update_cookie(request_rec *r, cookie_t *old_cookie)
   chxj_delete_cookie_expire(r, old_cookie->cookie_id);
 
   if (IS_COOKIE_LAZY(dconf)) {
-    DBG(r, "LAZY MODE");
+    DBG(r, "REQ[%X] LAZY MODE",TO_ADDR(r));
     cookie->cookie_id = apr_pstrdup(r->pool, old_cookie->cookie_id);
   }
   else {
-    DBG(r, "NO LAZY MODE");
+    DBG(r, "REQ[%X] NO LAZY MODE",TO_ADDR(r));
     cookie->cookie_id = alloc_cookie_id(r);
   }
 
@@ -398,7 +401,7 @@ chxj_update_cookie(request_rec *r, cookie_t *old_cookie)
                                "\n",
                                NULL);
 
-    DBG(r, "OLD COOKIE VALUE=[%s][%s]", hentryp[ii].key, hentryp[ii].val);
+    DBG(r, "REQ[%X] OLD COOKIE VALUE=[%s][%s]", TO_ADDR(r),hentryp[ii].key, hentryp[ii].val);
     store_string = apr_pstrcat(r->pool, 
                                store_string, 
                                hentryp[ii].key, 
@@ -412,7 +415,7 @@ chxj_update_cookie(request_rec *r, cookie_t *old_cookie)
 #if defined(USE_MYSQL_COOKIE)
     if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
       if (!chxj_update_cookie_mysql(r, dconf, cookie->cookie_id, store_string)) {
-        ERR(r, "failed: chxj_update_cookie_mysql() cookie_id:[%s]", cookie->cookie_id);
+        ERR(r, "REQ[%X] failed: chxj_update_cookie_mysql() cookie_id:[%s]", TO_ADDR(r),cookie->cookie_id);
         goto on_error;
       }
       done_proc = 1;
@@ -422,7 +425,7 @@ chxj_update_cookie(request_rec *r, cookie_t *old_cookie)
 #if defined(USE_MEMCACHE_COOKIE)
     if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
       if (! chxj_update_cookie_memcache(r, dconf, cookie->cookie_id, store_string)) {
-        ERR(r, "failed: chxj_update_cookie_memcache() cookie_id:[%s]", cookie->cookie_id);
+        ERR(r, "REQ[%X] failed: chxj_update_cookie_memcache() cookie_id:[%s]", TO_ADDR(r),cookie->cookie_id);
         goto on_error;
       }
       done_proc = 1;
@@ -430,7 +433,7 @@ chxj_update_cookie(request_rec *r, cookie_t *old_cookie)
 #endif
     if (!done_proc || IS_COOKIE_STORE_DBM(dconf->cookie_store_type)) {
       if (! chxj_update_cookie_dbm(r, dconf, cookie->cookie_id, store_string)) {
-        ERR(r, "failed: chxj_update_cookie_dbm() cookie_id:[%s]", cookie->cookie_id);
+        ERR(r, "REQ[%X] failed: chxj_update_cookie_dbm() cookie_id:[%s]", TO_ADDR(r),cookie->cookie_id);
         goto on_error;
       }
     }
@@ -442,7 +445,7 @@ chxj_update_cookie(request_rec *r, cookie_t *old_cookie)
 
 
 on_error:
-  DBG(r, "end   chxj_update_cookie()");
+  DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
   return cookie;
 }
 
@@ -465,7 +468,7 @@ chxj_load_cookie(request_rec *r, char *cookie_id)
   char                    *pair;
   char                    *header_cookie;
 
-  DBG(r, "REQ[%X] start chxj_load_cookie() cookie_id=[%s]", TO_ADDR(r), cookie_id);
+  DBG(r, "REQ[%X] start %s() cookie_id=[%s]", TO_ADDR(r), __func__,cookie_id);
   chxj_cookie_expire_gc(r);
 
   cookie = (cookie_t*)apr_palloc(r->pool, sizeof(cookie_t));
@@ -477,11 +480,11 @@ chxj_load_cookie(request_rec *r, char *cookie_id)
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
   entryp = chxj_apply_convrule(r, dconf->convrules);
   if (! entryp) {
-    DBG(r, "REQ[%X] end chxj_load_cookie() no pattern", TO_ADDR(r));
+    DBG(r, "REQ[%X] end %s() (no pattern)", TO_ADDR(r),__func__);
     goto on_error0;
   }
-  if (! (entryp->action & CONVRULE_COOKIE_ON_BIT)) {
-    DBG(r, "REQ[%X] end chxj_load_cookie() CookieOff", TO_ADDR(r));
+  if (! (entryp->action & CONVRULE_COOKIE_ON_BIT) && ! (entryp->action & CONVRULE_COOKIE_ONLY_BIT)) {
+    DBG(r, "REQ[%X] end %s() (CookieOff)", TO_ADDR(r),__func__);
     goto on_error0;
   }
   load_cookie_table = apr_table_make(r->pool, 0);
@@ -491,7 +494,7 @@ chxj_load_cookie(request_rec *r, char *cookie_id)
 #if defined(USE_MYSQL_COOKIE)
     if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
       if (! (load_string = chxj_load_cookie_mysql(r, dconf, cookie->cookie_id))) {
-        ERR(r, "%s:%d failed: chxj_load_cookie_mysql() cookie_id:[%s]", APLOG_MARK, cookie_id);
+        ERR(r, "REQ[%X] %s:%d failed: chxj_load_cookie_mysql() cookie_id:[%s]", TO_ADDR(r),APLOG_MARK, cookie_id);
         goto on_error0;
       }
       done_proc = 1;
@@ -500,7 +503,7 @@ chxj_load_cookie(request_rec *r, char *cookie_id)
 #if defined(USE_MEMCACHE_COOKIE)
     if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
       if (! (load_string = chxj_load_cookie_memcache(r, dconf, cookie->cookie_id))) {
-        ERR(r, "%s:%d failed: chxj_load_cookie_memcache() cookie_id:[%s]", APLOG_MARK,cookie_id);
+        ERR(r, "REQ[%X] %s:%d failed: chxj_load_cookie_memcache() cookie_id:[%s]", TO_ADDR(r),APLOG_MARK,cookie_id);
         goto on_error0;
       }
       done_proc = 1;
@@ -508,7 +511,7 @@ chxj_load_cookie(request_rec *r, char *cookie_id)
 #endif
     if (!done_proc || IS_COOKIE_STORE_DBM(dconf->cookie_store_type)) {
       if (! (load_string = chxj_load_cookie_dbm(r, dconf, cookie->cookie_id))) {
-        ERR(r, "%s:%d failed: chxj_load_cookie_dbm() cookie_id:[%s]", APLOG_MARK,cookie_id);
+        ERR(r, "REQ[%X] %s:%d failed: chxj_load_cookie_dbm() cookie_id:[%s]", TO_ADDR(r),APLOG_MARK,cookie_id);
         goto on_error0;
       }
     }
@@ -566,13 +569,13 @@ chxj_load_cookie(request_rec *r, char *cookie_id)
     apr_table_setn(r->headers_in, "CHXJ_COOKIE_ID", cookie->cookie_id);
   }
 
-  DBG(r, "REQ[%X] end   chxj_load_cookie()", TO_ADDR(r));
+  DBG(r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
   return cookie;
 
 
 on_error0:
 
-  DBG(r, "REQ[%X] end   chxj_load_cookie()", TO_ADDR(r));
+  DBG(r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
   return NULL;
 }
 
@@ -588,7 +591,7 @@ check_valid_cookie_attribute(request_rec *r, const char *value)
   char *secure_pair;
   char *p;
 
-  DBG(r, "start check_valid_cookie_attribute() value:[%s]", value);
+  DBG(r, "REQ[%X] start %s() value:[%s]", TO_ADDR(r),__func__,value);
 
   domain_pair = path_pair = expire_pair = secure_pair = NULL;
   p = apr_pstrdup(r->pool, value);
@@ -616,29 +619,33 @@ check_valid_cookie_attribute(request_rec *r, const char *value)
 
   if (domain_pair) {
     if (!valid_domain(r, domain_pair)) {
-      DBG(r, "invalid domain. domain_pair:[%s]", domain_pair);
+      DBG(r, "REQ[%X] invalid domain. domain_pair:[%s]", TO_ADDR(r),domain_pair);
+      DBG(r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
       return CHXJ_FALSE;
     }
   }
   if (path_pair) {
     if (!valid_path(r, path_pair)) {
-      DBG(r, "invalid path. path_pair:[%s]", path_pair);
+      DBG(r, "REQ[%X] invalid path. path_pair:[%s]", TO_ADDR(r), path_pair);
+      DBG(r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
       return CHXJ_FALSE;
     }
   }
   if (expire_pair) {
     if (!valid_expires(r, expire_pair)) {
-      DBG(r, "invalid expire. expire_pair:[%s]", expire_pair);
+      DBG(r, "REQ[%X] invalid expire. expire_pair:[%s]", TO_ADDR(r), expire_pair);
+      DBG(r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
       return CHXJ_FALSE;
     }
   }
   if (secure_pair) {
     if (!valid_secure(r, secure_pair)) {
-      DBG(r, "invalid secure. secure_pair:[%s]", secure_pair);
+      DBG(r, "REQ[%X] invalid secure. secure_pair:[%s]", TO_ADDR(r), secure_pair);
+      DBG(r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
       return CHXJ_FALSE;
     }
   }
-  DBG(r, "end check_valid_cookie_attribute() value:[%s]", value);
+  DBG(r, "REQ[%X] end %s() value:[%s]", TO_ADDR(r), __func__,value);
   return CHXJ_TRUE;
 }
 
@@ -652,7 +659,7 @@ check_valid_cookie_attribute_expires_only(request_rec *r, const char *value)
   char *expire_pair = NULL;
   char *p;
 
-  DBG(r, "REQ[%X] start check_valid_cookie_attribute_expires_only() value:[%s]", (unsigned int)(apr_size_t)r, value);
+  DBG(r, "REQ[%X] start %s() value:[%s]", TO_ADDR(r),__func__, value);
 
   expire_pair = NULL;
   p = apr_pstrdup(r->pool, value);
@@ -671,11 +678,12 @@ check_valid_cookie_attribute_expires_only(request_rec *r, const char *value)
 
   if (expire_pair) {
     if (!valid_expires(r, expire_pair)) {
-      DBG(r, "REQ[%X] invalid expire. expire_pair:[%s]", (unsigned int)(apr_size_t)r, expire_pair);
+      DBG(r, "REQ[%X] invalid expire. expire_pair:[%s]", TO_ADDR(r), expire_pair);
+      DBG(r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
       return CHXJ_FALSE;
     }
   }
-  DBG(r, "REQ[%X] end check_valid_cookie_attribute_expires_only() value:[%s]", (unsigned int)(apr_size_t)r, value);
+  DBG(r, "REQ[%X] end %s() value:[%s]", TO_ADDR(r),__func__, value);
   return CHXJ_TRUE;
 }
 
@@ -688,16 +696,16 @@ valid_domain(request_rec *r, const char *value)
   char *val;
   char *pstat;
   char *p = apr_pstrdup(r->pool, value);
-  const char *host = apr_table_get(r->headers_in, HTTP_HOST);
+  char *host = (char *)apr_table_get(r->headers_in, HTTP_HOST);
 
-  DBG(r, "REQ[%X] start valid_domain() value:[%s]", TO_ADDR(r), value);
-  DBG(r, "REQ[%X] host:[%s]", TO_ADDR(r), host);
-  host = s_cut_until_end_hostname(r, host);
-  DBG(r, "REQ[%X] host:[%s](after s_cut_until_end_hostname())", TO_ADDR(r), host);
+  DBG(r, "REQ[%X] start %s() value:[%s]", TO_ADDR(r), __func__,value);
   if (!host) {
-    DBG(r, "REQ[%X] end valid_domain() value:[%s]", TO_ADDR(r), value);
+    DBG(r, "REQ[%X] end %s() value:[%s]", TO_ADDR(r), __func__,value);
     return CHXJ_TRUE;
   }
+  DBG(r, "REQ[%X] host:[%s]", TO_ADDR(r), host);
+  host = s_cut_until_end_hostname(r, apr_pstrdup(r->pool, host));
+  DBG(r, "REQ[%X] host:[%s](after s_cut_until_end_hostname())", TO_ADDR(r), host);
 
   name = apr_strtok(p,"=", &pstat);
   name = qs_trim_string(r->pool, name);
@@ -707,11 +715,11 @@ valid_domain(request_rec *r, const char *value)
   if (len) {
     if (chxj_strcasenrcmp(r->pool, host, val, strlen(val))) {
       DBG(r, "REQ[%X] not match domain. host domain:[%s] vs value:[%s]", TO_ADDR(r), host, val);
-      DBG(r, "REQ[%X] end valid_domain() value:[%s]", TO_ADDR(r), value);
+      DBG(r, "REQ[%X] end %s() value:[%s]", TO_ADDR(r), __func__,value);
       return CHXJ_FALSE;
     }
   }
-  DBG(r, "REQ[%X] end valid_domain() value:[%s]", TO_ADDR(r), value);
+  DBG(r, "REQ[%X] end %s() value:[%s]", TO_ADDR(r), __func__,value);
   return CHXJ_TRUE;
 }
 
@@ -726,7 +734,7 @@ valid_path(request_rec *r, const char *value)
   char *val;
   char *pstat;
 
-  DBG(r, "start valid_path() unparsed_uri:[%s] value:[%s]", r->unparsed_uri, value);
+  DBG(r, "REQ[%X] start %s() unparsed_uri:[%s] value:[%s]", TO_ADDR(r),__func__,r->unparsed_uri, value);
   if (chxj_starts_with(r->unparsed_uri, "http://")) {
     uri = strchr(&r->unparsed_uri[sizeof("http://")], '/');
     if (uri != NULL) {
@@ -749,19 +757,19 @@ valid_path(request_rec *r, const char *value)
   if ((tmp = strchr(uri, '?'))) {
     *tmp = '\0';
   }
-  DBG(r, "uri=[%s]", uri);
+  DBG(r, "REQ[%X] uri=[%s]", TO_ADDR(r),uri);
   name = apr_strtok(p, "=", &pstat);
   val = apr_strtok(NULL, "=", &pstat);
   name = qs_trim_string(r->pool, name);
   val = qs_trim_string(r->pool, val);
-  DBG(r, "name=[%s] val=[%s]", name, val);
+  DBG(r, "REQ[%X] name=[%s] val=[%s]", TO_ADDR(r), name, val);
   
-  DBG(r, "val:[%s] vs uri:[%s]", val, uri);
+  DBG(r, "REQ[%X] val:[%s] vs uri:[%s]", TO_ADDR(r),val, uri);
   if (! chxj_starts_with(uri, val)) {
-    DBG(r, "end valid_path() unparsed_uri:[%s] value:[%s] (false)", r->unparsed_uri, value);
+    DBG(r, "REQ[%X] end %s() unparsed_uri:[%s] value:[%s] (false)", TO_ADDR(r),__func__,r->unparsed_uri, value);
     return CHXJ_FALSE;
   }
-  DBG(r, "end valid_path() unparsed_uri:[%s] value:[%s] (true)", r->unparsed_uri, value);
+  DBG(r, "REQ[%X] end %s() unparsed_uri:[%s] value:[%s] (true)", TO_ADDR(r),__func__,r->unparsed_uri, value);
   return CHXJ_TRUE;
 }
 
@@ -776,18 +784,18 @@ valid_expires(request_rec *r, const char *value)
   apr_time_t expires;
   apr_time_t now;
 
-  DBG(r, "start valid_expire() value:[%s]", value);
+  DBG(r, "REQ[%X] start %s() value:[%s]", TO_ADDR(r),__func__,value);
   name = apr_strtok(p, "=", &pstat);
   val  = apr_strtok(NULL, "=", &pstat);
-  DBG(r, "name=[%s] val=[%s]", name, val);
+  DBG(r, "REQ[%X] name=[%s] val=[%s]", TO_ADDR(r),name, val);
   now = apr_time_now();
   expires = chxj_parse_cookie_expires(val);
   if (expires < now) {
-    DBG(r, "end valid_expire() value:[%s] (expired)", value);
+    DBG(r, "REQ[%X] end %s() value:[%s] (expired)", TO_ADDR(r),__func__,value);
     return CHXJ_FALSE;
   }
   
-  DBG(r, "end valid_expire() value:[%s] (non expired)", value);
+  DBG(r, "REQ[%X] end %s() value:[%s] (non expired)", TO_ADDR(r),__func__,value);
   return CHXJ_TRUE;
 }
 
@@ -796,13 +804,13 @@ static int
 valid_secure(request_rec *r, const char *value)
 {
   const char *scheme;
-  DBG(r, "start valid_secure() value:[%s]", value);
+  DBG(r, "REQ[%X] start %s() value:[%s]", TO_ADDR(r),__func__,value);
   scheme = chxj_apache_run_http_scheme(r);
   if (strcasecmp("https", scheme)) {
-    DBG(r, "end valid_secure() value:[%s] (non secure)", value);
+    DBG(r, "REQ[%X] end %s() value:[%s] (non secure)", TO_ADDR(r),__func__,value);
     return CHXJ_FALSE;
   }
-  DBG(r, "end valid_secure() value:[%s] (secure)", value);
+  DBG(r, "REQ[%X] end %s() value:[%s] (secure)", TO_ADDR(r),__func__,value);
   return CHXJ_TRUE;
 }
 
@@ -814,7 +822,7 @@ chxj_add_cookie_parameter(request_rec *r, char *value, cookie_t *cookie)
   char *dst;
   char *name = "";
 
-  DBG(r, "REQ[%X] start chxj_add_cookie_parameter() cookie_id=[%s]", TO_ADDR(r), (cookie) ? cookie->cookie_id : NULL);
+  DBG(r, "REQ[%X] start %s() cookie_id=[%s]", TO_ADDR(r), __func__,(cookie) ? cookie->cookie_id : NULL);
 
   dst = apr_pstrdup(r->pool, value);
 
@@ -825,7 +833,7 @@ chxj_add_cookie_parameter(request_rec *r, char *value, cookie_t *cookie)
     goto on_error;
 
   if (chxj_cookie_check_host(r, value) != 0) {
-    DBG(r, "REQ[%X] end chxj_add_cookie_parameter()(check host)", TO_ADDR(r));
+    DBG(r, "REQ[%X] (check host failed)", TO_ADDR(r));
     goto on_error;
   }
 
@@ -852,12 +860,12 @@ chxj_add_cookie_parameter(request_rec *r, char *value, cookie_t *cookie)
     dst = apr_psprintf(r->pool, "%s?%s=%s%s", dst, CHXJ_COOKIE_PARAM, cookie->cookie_id, name);
   }
 
-  DBG(r, "REQ[%X] end   chxj_add_cookie_parameter() dst=[%s]", TO_ADDR(r), dst);
+  DBG(r, "REQ[%X] end %s() dst=[%s]", TO_ADDR(r), __func__,dst);
 
   return dst;
 
 on_error:
-  DBG(r, "REQ[%X] end   chxj_add_cookie_parameter() (on_error)", TO_ADDR(r));
+  DBG(r, "REQ[%X] end %s() (on_error)", TO_ADDR(r),__func__);
   return dst;
 }
 
@@ -869,17 +877,17 @@ chxj_add_cookie_no_update_parameter(request_rec *r, char *value)
   char *dst;
   char *name = "";
 
-  DBG(r, "REQ[%X] start chxj_add_cookie_no_update_parameter()", (unsigned int)(apr_size_t)r);
+  DBG(r, "REQ[%X] start %s()", TO_ADDR(r),__func__);
 
   if (! value || ! *value) {
-    DBG(r, "REQ[%X] end chxj_add_cookie_parameter()(void value)", (unsigned int)(apr_size_t)r);
+    DBG(r, "REQ[%X] end %s()(void value)", TO_ADDR(r),__func__);
     return apr_pstrdup(r->pool, "");
   }
 
   dst = apr_pstrdup(r->pool, value);
 
   if (chxj_cookie_check_host(r, value) != 0) {
-    DBG(r, "REQ[%X] end chxj_add_cookie_parameter()(check host)", (unsigned int)(apr_size_t)r);
+    DBG(r, "REQ[%X] check host failure", TO_ADDR(r));
     goto on_error;
   }
 
@@ -889,11 +897,11 @@ chxj_add_cookie_no_update_parameter(request_rec *r, char *value)
     *qs = 0;
   }
   dst = apr_psprintf(r->pool, "%s%c%s=true%s", dst, (strchr(dst,'?')) ? '&' : '?',CHXJ_COOKIE_NOUPDATE_PARAM, name);
-  DBG(r, "REQ[%X] end   chxj_add_cookie_no_update_parameter() dst=[%s]", (unsigned int)(apr_size_t)r, dst);
+  DBG(r, "REQ[%X] end %s() dst=[%s]", TO_ADDR(r),__func__, dst);
   return dst;
 
 on_error:
-  DBG(r, "REQ[%X] end   chxj_add_cookie_no_update_parameter() (on_error)", (unsigned int)(apr_size_t)r);
+  DBG(r, "REQ[%X] end %s() (on_error)", TO_ADDR(r),__func__);
   return dst;
 }
 
@@ -904,36 +912,36 @@ chxj_cookie_check_host(request_rec *r, char *value)
   char *hostnm;
   mod_chxj_config *dconf;
 
-  DBG(r, "REQ[%X] start chxj_cookie_check_host()", (unsigned int)(apr_size_t)r);
-  DBG(r, "REQ[%X] hostname=[%s] vs Location:[%s]", (unsigned int)(apr_size_t)r, r->hostname, value);
+  DBG(r, "REQ[%X] start %s()", TO_ADDR(r),__func__);
+  DBG(r, "REQ[%X] hostname=[%s] vs Location:[%s]", TO_ADDR(r), r->hostname, value);
 
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
 
   hostnm = s_get_hostname_from_url(r, value);
   if (hostnm) {
     if (dconf->allowed_cookie_domain) {
-      DBG(r, "REQ[%X] allowed_domain[%s] vs Location:[%s]", (unsigned int)(apr_size_t)r, dconf->allowed_cookie_domain, value);
+      DBG(r, "REQ[%X] allowed_domain[%s] vs Location:[%s]", TO_ADDR(r), dconf->allowed_cookie_domain, value);
       if (chxj_strcasenrcmp(r->pool, hostnm, dconf->allowed_cookie_domain, strlen(dconf->allowed_cookie_domain))) {
-        DBG(r, "REQ[%X] end chxj_cookie_check_host() (false/allowed_domain)", (unsigned int)(apr_size_t)r);
+        DBG(r, "REQ[%X] end %s() (false/allowed_domain)", TO_ADDR(r),__func__);
         return 1;
       }
       else {
-        DBG(r, "REQ[%X] end chxj_cookie_check_host() (true/allowed_domain)", (unsigned int)(apr_size_t)r);
+        DBG(r, "REQ[%X] end %s() (true/allowed_domain)", TO_ADDR(r),__func__);
         return 0;
       }
     }
     else {
       if (strcasecmp(hostnm, r->hostname) == 0) {
-        DBG(r, "REQ[%X] end chxj_cookie_check_host() (true)", (unsigned int)(apr_size_t)r);
+        DBG(r, "REQ[%X] end %s() (true)", TO_ADDR(r),__func__);
         return 0;
       }
       else {
-        DBG(r, "REQ[%X] end chxj_cookie_check_host() (false)", (unsigned int)(apr_size_t)r);
+        DBG(r, "REQ[%X] end %s() (false)", TO_ADDR(r),__func__);
         return 1;
       }
     }
   }
-  DBG(r, "REQ[%X] end chxj_cookie_check_host() (true)", (unsigned int)(apr_size_t)r);
+  DBG(r, "REQ[%X] end %s() (true)", TO_ADDR(r),__func__);
   return 0;
 }
 
@@ -978,14 +986,14 @@ chxj_delete_cookie(request_rec *r, const char *cookie_id)
   int done_proc = 0;
   mod_chxj_config *dconf;
 
-  DBG(r, "start chxj_delete_cookie()");
+  DBG(r, "REQ[%X] start %s()",TO_ADDR(r),__func__);
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
 
 #if defined(USE_MYSQL_COOKIE)
   if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
     if (! chxj_delete_cookie_mysql(r, dconf, cookie_id)) {
-      ERR(r, "failed: chxj_delete_cookie_mysql() cookie_id:[%s]", cookie_id);
-      DBG(r, "end   chxj_delete_cookie()");
+      ERR(r, "REQ[%X] failed: chxj_delete_cookie_mysql() cookie_id:[%s]", TO_ADDR(r),cookie_id);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
     done_proc = 1;
@@ -994,8 +1002,8 @@ chxj_delete_cookie(request_rec *r, const char *cookie_id)
 #if defined(USE_MEMCACHE_COOKIE)
   if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
     if (! chxj_delete_cookie_memcache(r, dconf, cookie_id)) {
-      ERR(r, "failed: chxj_delete_cookie_memcache() cookie_id:[%s]", cookie_id);
-      DBG(r, "end   chxj_delete_cookie()");
+      ERR(r, "REQ[%X] failed: chxj_delete_cookie_memcache() cookie_id:[%s]", TO_ADDR(r),cookie_id);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
     done_proc = 1;
@@ -1003,13 +1011,13 @@ chxj_delete_cookie(request_rec *r, const char *cookie_id)
 #endif
   if (!done_proc || IS_COOKIE_STORE_DBM(dconf->cookie_store_type)) {
     if (! chxj_delete_cookie_dbm(r, dconf, cookie_id)) {
-      ERR(r, "failed: chxj_delete_cookie_dbm() cookie_id:[%s]", cookie_id);
-      DBG(r, "end   chxj_delete_cookie()");
+      ERR(r, "REQ[%X] failed: chxj_delete_cookie_dbm() cookie_id:[%s]", TO_ADDR(r),cookie_id);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
   }
 
-  DBG(r, "end   chxj_delete_cookie()");
+  DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
 }
 
 
@@ -1022,27 +1030,30 @@ chxj_save_cookie_expire(request_rec *r, cookie_t *cookie)
   int done_proc = 0;
   mod_chxj_config         *dconf;
 
-  DBG(r, "start chxj_save_cookie_expire()");
+  DBG(r, "REQ[%X] start %s()",TO_ADDR(r),__func__);
   if (!cookie) {
-    DBG(r, "cookie is NULL");
+    DBG(r, "REQ[%X] cookie is NULL", TO_ADDR(r));
+    DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
     return;
   }
   if (!cookie->cookie_id) {
-    DBG(r, "cookie->cookie_id is NULL");
+    DBG(r, "REQ[%X] cookie->cookie_id is NULL", TO_ADDR(r));
+    DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
     return;
   }
 
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
   if (!dconf) {
-    DBG(r, "dconf is NULL");
+    DBG(r, "REQ[%X] dconf is NULL", TO_ADDR(r));
+    DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
     return;
   }
 
 #if defined(USE_MYSQL_COOKIE)
   if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
     if (! chxj_save_cookie_expire_mysql(r, dconf, cookie->cookie_id)) {
-      ERR(r, "failed: chxj_save_cookie_expire_mysql() cookie_id:[%s]", cookie->cookie_id);
-      DBG(r, "end   chxj_save_cookie_expire()");
+      ERR(r, "REQ[%X] failed: chxj_save_cookie_expire_mysql() cookie_id:[%s]", TO_ADDR(r),cookie->cookie_id);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
     done_proc = 1;
@@ -1051,8 +1062,8 @@ chxj_save_cookie_expire(request_rec *r, cookie_t *cookie)
 #if defined(USE_MEMCACHE_COOKIE)
   if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
     if (! chxj_save_cookie_expire_memcache(r, dconf, cookie->cookie_id)) {
-      ERR(r, "failed: chxj_save_cookie_expire_memcache() cookie_id:[%s]", cookie->cookie_id);
-      DBG(r, "end   chxj_save_cookie_expire()");
+      ERR(r, "REQ[%X] failed: chxj_save_cookie_expire_memcache() cookie_id:[%s]", TO_ADDR(r),cookie->cookie_id);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
     done_proc = 1;
@@ -1060,13 +1071,13 @@ chxj_save_cookie_expire(request_rec *r, cookie_t *cookie)
 #endif
   if (!done_proc || IS_COOKIE_STORE_DBM(dconf->cookie_store_type)) {
     if (! chxj_save_cookie_expire_dbm(r, dconf, cookie->cookie_id)) {
-      ERR(r, "failed: chxj_save_cookie_expire_dbm() cookie_id:[%s]", cookie->cookie_id);
-      DBG(r, "end   chxj_save_cookie_expire()");
+      ERR(r, "REQ[%X] failed: chxj_save_cookie_expire_dbm() cookie_id:[%s]", TO_ADDR(r),cookie->cookie_id);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
   }
 
-  DBG(r, "end   chxj_save_cookie_expire()");
+  DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
 }
 
 
@@ -1076,14 +1087,15 @@ chxj_delete_cookie_expire(request_rec *r, char *cookie_id)
   int done_proc = 0;
   mod_chxj_config *dconf;
 
-  DBG(r, "start chxj_delete_cookie_expire()");
+  DBG(r, "REQ[%X] start %s()",TO_ADDR(r),__func__);
 
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
 
 #if defined(USE_MYSQL_COOKIE)
   if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
     if (! chxj_delete_cookie_expire_mysql(r, dconf, cookie_id)) {
-      ERR(r, "failed: chxj_delete_cookie_expire_mysql() cookie_id:[%s]", cookie_id);
+      ERR(r, "REQ[%X] failed: chxj_delete_cookie_expire_mysql() cookie_id:[%s]", TO_ADDR(r),cookie_id);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
     done_proc = 1;
@@ -1092,7 +1104,8 @@ chxj_delete_cookie_expire(request_rec *r, char *cookie_id)
 #if defined(USE_MEMCACHE_COOKIE)
   if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
     if (!chxj_delete_cookie_expire_memcache(r, dconf, cookie_id)) {
-      ERR(r, "failed: chxj_delete_cookie_expire_memcache() cookie_id:[%s]", cookie_id);
+      ERR(r, "REQ[%X] failed: chxj_delete_cookie_expire_memcache() cookie_id:[%s]", TO_ADDR(r),cookie_id);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     } 
     done_proc = 1;
@@ -1100,12 +1113,13 @@ chxj_delete_cookie_expire(request_rec *r, char *cookie_id)
 #endif
   if (!done_proc || IS_COOKIE_STORE_DBM(dconf->cookie_store_type)) {
     if (!chxj_delete_cookie_expire_dbm(r, dconf, cookie_id)) {
-      ERR(r, "failed: chxj_delete_cookie_expire_dbm() cookie_id:[%s]", cookie_id);
+      ERR(r, "REQ[%X] failed: chxj_delete_cookie_expire_dbm() cookie_id:[%s]", TO_ADDR(r),cookie_id);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     } 
   }
 
-  DBG(r, "end   chxj_delete_cookie_expire()");
+  DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
 }
 
 
@@ -1115,13 +1129,14 @@ chxj_cookie_expire_gc(request_rec *r)
   mod_chxj_config   *dconf;
   int done_proc = 0;
 
-  DBG(r, "start chxj_cookie_expire_gc()");
+  DBG(r, "REQ[%X] start %s()",TO_ADDR(r),__func__);
 
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
 #if defined(USE_MYSQL_COOKIE)
   if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
     if (! chxj_cookie_expire_gc_mysql(r, dconf)) {
-      ERR(r, "%s:%d end chxj_cookie_expire_gc(): failed: chxj_cookie_expire_gc_mysql()", APLOG_MARK);
+      ERR(r, "REQ[%X] %s:%d end chxj_cookie_expire_gc(): failed: chxj_cookie_expire_gc_mysql()", TO_ADDR(r),APLOG_MARK);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
     done_proc = 1;
@@ -1130,7 +1145,8 @@ chxj_cookie_expire_gc(request_rec *r)
 #if defined(USE_MEMCACHE_COOKIE)
   if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
     if (! chxj_cookie_expire_gc_memcache(r, dconf)) {
-      ERR(r, "%s:%d end chxj_cookie_expire_gc(): failed: chxj_cookie_expire_gc_memcache()", APLOG_MARK);
+      ERR(r, "REQ[%X] %s:%d end chxj_cookie_expire_gc(): failed: chxj_cookie_expire_gc_memcache()", TO_ADDR(r),APLOG_MARK);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
     done_proc = 1;
@@ -1138,11 +1154,12 @@ chxj_cookie_expire_gc(request_rec *r)
 #endif
   if (!done_proc) {
     if (! chxj_cookie_expire_gc_dbm(r, dconf)) {
-      ERR(r, "%s:%d end chxj_cookie_expire_gc(): failed: chxj_cookie_expire_gc_dbm()", APLOG_MARK);
+      ERR(r, "REQ[%X] %s:%d end chxj_cookie_expire_gc(): failed: chxj_cookie_expire_gc_dbm()", TO_ADDR(r),APLOG_MARK);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return;
     }
   }
-  DBG(r, "end   chxj_cookie_expire_gc()");
+  DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
 }
 
 apr_time_t
@@ -1161,17 +1178,19 @@ __chxj_cookie_lock(request_rec *r, const char *filename, int line)
   int done_proc = 0;
   cookie_lock_t *ret = NULL;
 
-  DBG(r, "start chxj_cookie_lock() call from %s:%d", filename, line);
+  DBG(r, "REQ[%X] start %s() call from %s:%d", TO_ADDR(r),__func__,filename, line);
   if ((rv = apr_proc_mutex_lock(global_cookie_mutex)) != APR_SUCCESS) {
     char errstr[255];
-    ERR(r, "%s:%d apr_proc_mutex_lock failure.(%d:%s)", APLOG_MARK, rv, apr_strerror(rv, errstr, 255));
+    ERR(r, "REQ[%X] %s:%d apr_proc_mutex_lock failure.(%d:%s)", TO_ADDR(r),APLOG_MARK, rv, apr_strerror(rv, errstr, 255));
+    DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
     return NULL;
   }
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
 #if defined(USE_MYSQL_COOKIE)
   if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
     if (! chxj_cookie_lock_mysql(r, dconf)) {
-      ERR(r, "%s:%d end chxj_cookie_lock(): failed: chxj_cookie_lock_mysql()", APLOG_MARK);
+      ERR(r, "REQ[%X] %s:%d end chxj_cookie_lock(): failed: chxj_cookie_lock_mysql()", TO_ADDR(r),APLOG_MARK);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return NULL;
     }
     done_proc = 1;
@@ -1182,7 +1201,8 @@ __chxj_cookie_lock(request_rec *r, const char *filename, int line)
 #if defined(USE_MEMCACHE_COOKIE)
   if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
     if (! chxj_cookie_lock_memcache(r, dconf)) {
-      ERR(r, "%s:%d end chxj_cookie_lock(): failed: chxj_cookie_lock_memcache()", APLOG_MARK);
+      ERR(r, "REQ[%X] %s:%d end chxj_cookie_lock(): failed: chxj_cookie_lock_memcache()", TO_ADDR(r),APLOG_MARK);
+      DBG(r, "REQ[%X] end %s()",TO_ADDR(r),__func__);
       return NULL;
     }
     done_proc = 1;
@@ -1192,12 +1212,12 @@ __chxj_cookie_lock(request_rec *r, const char *filename, int line)
 #endif
   if (!done_proc) {
     if (!(ret = chxj_cookie_lock_dbm(r, dconf))) {
-      ERR(r, "%s:%d end chxj_cookie_lock(): failed: chxj_cookie_lock_dbm()", APLOG_MARK);
-      DBG(r, "end chxj_cookie_lock() call from %s:%d", filename, line);
+      ERR(r, "REQ[%X] %s:%d end chxj_cookie_lock(): failed: chxj_cookie_lock_dbm()", TO_ADDR(r), APLOG_MARK);
+      DBG(r, "REQ[%X] end %s() call from %s:%d", TO_ADDR(r),__func__,filename, line);
       return NULL;
     }
   }
-  DBG(r, "REQ:[%X] end chxj_cookie_lock() call from %s:%d", (unsigned int)(apr_size_t)r, filename, line);
+  DBG(r, "REQ:[%X] end %s() call from %s:%d", TO_ADDR(r),__func__, filename, line);
   return ret;
 }
 
@@ -1210,13 +1230,13 @@ __chxj_cookie_unlock(request_rec *r, cookie_lock_t *lock, const char *filename,
   apr_status_t rv;
   int rtn = 1;
 
-  DBG(r, "start chxj_cookie_unlock() call from %s:%d", filename, line);
+  DBG(r, "REQ[%X] start %s() call from %s:%d", TO_ADDR(r),__func__,filename, line);
 
   dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
 #if defined(USE_MYSQL_COOKIE)
   if (IS_COOKIE_STORE_MYSQL(dconf->cookie_store_type)) {
     if (! chxj_cookie_unlock_mysql(r, dconf)) {
-      ERR(r, "failed: chxj_cookie_unlock_mysql()");
+      ERR(r, "REQ[%X] failed: chxj_cookie_unlock_mysql()", TO_ADDR(r));
       rtn = 0;
       goto end_chxj_cookie_unlock;
     }
@@ -1226,7 +1246,7 @@ __chxj_cookie_unlock(request_rec *r, cookie_lock_t *lock, const char *filename,
 #if defined(USE_MEMCACHE_COOKIE)
   if (IS_COOKIE_STORE_MEMCACHE(dconf->cookie_store_type)) {
     if (! chxj_cookie_unlock_memcache(r, dconf)) {
-      ERR(r, "failed: chxj_cookie_unlock_memcache()");
+      ERR(r, "REQ[%X] failed: chxj_cookie_unlock_memcache()", TO_ADDR(r));
       rtn = 0;
       goto end_chxj_cookie_unlock;
     }
@@ -1235,7 +1255,7 @@ __chxj_cookie_unlock(request_rec *r, cookie_lock_t *lock, const char *filename,
 #endif
   if (!done_proc) {
     if (! chxj_cookie_unlock_dbm(r, lock, dconf)) {
-      ERR(r, "failed: chxj_cookie_unlock_dbm()");
+      ERR(r, "REQ[%X] failed: chxj_cookie_unlock_dbm()",TO_ADDR(r));
       rtn = 0;
       goto end_chxj_cookie_unlock;
     }
@@ -1243,14 +1263,254 @@ __chxj_cookie_unlock(request_rec *r, cookie_lock_t *lock, const char *filename,
 end_chxj_cookie_unlock:
   if ((rv = apr_proc_mutex_unlock(global_cookie_mutex)) != APR_SUCCESS) {
     char errstr[255];
-    ERR(r, "%s:%d apr_proc_mutex_unlock failure.(%d:%s)", APLOG_MARK, rv, apr_strerror(rv, errstr, 255));
-    DBG(r, "end chxj_cookie_unlock() call from %s:%d", filename, line);
+    ERR(r, "REQ[%X] %s:%d apr_proc_mutex_unlock failure.(%d:%s)", TO_ADDR(r),APLOG_MARK, rv, apr_strerror(rv, errstr, 255));
+    DBG(r, "REQ[%X] end %s() call from %s:%d", TO_ADDR(r),__func__,filename, line);
     return 0;
   }
-  DBG(r, "end chxj_cookie_unlock() call from %s:%d", filename, line);
+  DBG(r, "REQ[%X] end %s() call from %s:%d", TO_ADDR(r),__func__,filename, line);
 
   return rtn;
 }
+
+
+#include "chxj_encoding.h"
+char *
+s_convert_a_tag(request_rec *r, const char *s, apr_size_t *len, cookie_t *cookie)
+{
+  apr_pool_t *pool;
+  ap_regex_t *regexp = NULL;
+  int   nowpos = 0;
+  Doc       doc;
+  char *dst = NULL;
+
+  apr_pool_create(&pool, r->pool);
+  regexp = ap_pregcomp(pool, "(<a[^>]*>)", AP_REG_EXTENDED|AP_REG_ICASE);
+  doc.r = r;
+  qs_init_malloc(&doc);
+  qs_init_root_node(&doc);
+
+  while(1) {
+    ap_regmatch_t        match[10];
+    if (ap_regexec((const ap_regex_t *)regexp, &s[nowpos], (apr_size_t)regexp->re_nsub + 1, match, 0) == 0) {
+      apr_size_t plen = match[1].rm_so;
+      if (plen > 0) {
+        char *tmpstr = apr_palloc(pool, plen + 1);
+        memset(tmpstr, 0, plen + 1);
+        memcpy(tmpstr, &s[nowpos], plen);
+        dst = apr_pstrcat(pool, (dst) ? dst : "", tmpstr, NULL);
+      }
+      else {
+        plen = 0;
+      }
+      char *matchstr = ap_pregsub(pool, "$1", &s[nowpos], regexp->re_nsub + 1, match);
+      if (matchstr) {
+        Node *node = qs_parse_tag(&doc, matchstr, strlen(matchstr) - 1);
+        Attr *attr;
+
+        DBG(r, "REQ[%X] matchstr:[%s]", TO_ADDR(r),matchstr);
+        dst = apr_pstrcat(pool, (dst) ? dst : "", "<a ", NULL);
+        for (attr = qs_get_attr(&doc,node);
+             attr;
+             attr = qs_get_next_attr(&doc,attr)) {
+          char *name  = qs_get_attr_name(&doc,attr);
+          char *value = qs_get_attr_value(&doc,attr);
+          DBG(r, "DBG[%X] name:[%s] value=[%s]", TO_ADDR(r), name, value);
+          if (STRCASEEQ('h', 'H', "href", name)
+              && ! chxj_starts_with(value, "mailto:") 
+              && ! chxj_starts_with(value, "tel:")) {
+            char *flgp = strchr(value, '#');
+            char *flgsv = NULL;
+            if (flgp) {
+              int flgl = strlen(flgp);
+              flgsv = apr_palloc(pool, flgl+1);
+              memset(flgsv, 0, flgl + 1);
+              memcpy(flgsv, flgp, flgl);
+              *flgp = 0;
+            }
+            if (strchr(value, '?') != 0) {
+              value = apr_pstrcat(pool, value, "&_chxj_cc=", cookie->cookie_id, NULL);
+            }
+            else {
+              value = apr_pstrcat(pool, value, "?_chxj_cc=", cookie->cookie_id, NULL);
+            }
+            if (flgsv) {
+              value = apr_pstrcat(pool, value, flgsv, NULL);
+            }
+            dst = apr_pstrcat(pool, (dst) ? dst : "", "href='", value, "' ", NULL);
+          }
+          else {
+            dst = apr_pstrcat(pool, (dst) ? dst : "", name, "='", value, "' ", NULL);
+          }
+        }
+        dst = apr_pstrcat(pool, (dst) ? dst : "", ">", NULL);
+        plen += strlen(matchstr);
+      }
+      nowpos += plen;
+    }
+    else {
+      break;
+    }
+  }
+
+  if ((apr_size_t)nowpos < *len) {
+    apr_size_t plen = *len - nowpos;
+    char *tmpstr = apr_palloc(pool, plen + 1);
+    memset(tmpstr, 0, plen+1);
+    memcpy(tmpstr, &s[nowpos], plen);
+    dst = apr_pstrcat(pool, (dst) ? dst : "", tmpstr, NULL);
+  }
+
+  *len = strlen(dst);
+  return dst;
+}
+char *
+s_convert_img_tag(request_rec *r, const char *s, apr_size_t *len, cookie_t *cookie)
+{
+  apr_pool_t *pool;
+  ap_regex_t *regexp = NULL;
+  int   nowpos = 0;
+  Doc       doc;
+  char *dst = NULL;
+
+  apr_pool_create(&pool, r->pool);
+  regexp = ap_pregcomp(pool, "(<img[^>]*>)", AP_REG_EXTENDED|AP_REG_ICASE);
+  doc.r = r;
+  qs_init_malloc(&doc);
+  qs_init_root_node(&doc);
+
+  while(1) {
+    ap_regmatch_t        match[10];
+    if (ap_regexec((const ap_regex_t *)regexp, &s[nowpos], (apr_size_t)regexp->re_nsub + 1, match, 0) == 0) {
+      apr_size_t plen = match[1].rm_so;
+      if (plen > 0) {
+        char *tmpstr = apr_palloc(pool, plen + 1);
+        memset(tmpstr, 0, plen + 1);
+        memcpy(tmpstr, &s[nowpos], plen);
+        dst = apr_pstrcat(pool, (dst) ? dst : "", tmpstr, NULL);
+      }
+      else {
+        plen = 0;
+      }
+      char *matchstr = ap_pregsub(pool, "$1", &s[nowpos], regexp->re_nsub + 1, match);
+      if (matchstr) {
+        Node *node = qs_parse_tag(&doc, matchstr, strlen(matchstr) - 1);
+        Attr *attr;
+
+        DBG(r, "REQ[%X] matchstr:[%s]", TO_ADDR(r),matchstr);
+        dst = apr_pstrcat(pool, (dst) ? dst : "", "<img ", NULL);
+        for (attr = qs_get_attr(&doc,node);
+             attr;
+             attr = qs_get_next_attr(&doc,attr)) {
+          char *name  = qs_get_attr_name(&doc,attr);
+          char *value = qs_get_attr_value(&doc,attr);
+          DBG(r, "REQ[%X] name:[%s] value=[%s]", TO_ADDR(r),name, value);
+          if (STRCASEEQ('s', 'S', "src", name)) {
+            if (strchr(value, '?') != 0) {
+              value = apr_pstrcat(pool, value, "&_chxj_cc=", cookie->cookie_id, "&_chxj_nc=true", NULL);
+            }
+            else {
+              value = apr_pstrcat(pool, value, "?_chxj_cc=", cookie->cookie_id, "&_chxj_nc=true", NULL);
+            }
+            dst = apr_pstrcat(pool, (dst) ? dst : "", "src='", value, "' ", NULL);
+          }
+          else {
+            dst = apr_pstrcat(pool, (dst) ? dst : "", name, "='", value, "' ", NULL);
+          }
+        }
+        dst = apr_pstrcat(pool, (dst) ? dst : "", "/>", NULL);
+        plen += strlen(matchstr);
+      }
+      nowpos += plen;
+    }
+    else {
+      break;
+    }
+  }
+
+  if ((apr_size_t)nowpos < *len) {
+    apr_size_t plen = *len - nowpos;
+    char *tmpstr = apr_palloc(pool, plen + 1);
+    memset(tmpstr, 0, plen+1);
+    memcpy(tmpstr, &s[nowpos], plen);
+    dst = apr_pstrcat(pool, (dst) ? dst : "", tmpstr, NULL);
+  }
+
+  *len = strlen(dst);
+  return dst;
+}
+char *
+s_convert_form_tag(request_rec *r, const char *s, apr_size_t *len, cookie_t *cookie)
+{
+  apr_pool_t *pool;
+  ap_regex_t *regexp = NULL;
+  int   nowpos = 0;
+  Doc       doc;
+  char *dst = NULL;
+  char *cookie_id;
+
+  apr_pool_create(&pool, r->pool);
+  regexp = ap_pregcomp(pool, "(</form>)", AP_REG_EXTENDED|AP_REG_ICASE);
+  doc.r = r;
+  qs_init_malloc(&doc);
+  qs_init_root_node(&doc);
+  cookie_id = chxj_url_decode(pool, cookie->cookie_id);
+
+  while(1) {
+    ap_regmatch_t        match[10];
+    if (ap_regexec((const ap_regex_t *)regexp, &s[nowpos], (apr_size_t)regexp->re_nsub + 1, match, 0) == 0) {
+      apr_size_t plen = match[1].rm_so;
+      if (plen > 0) {
+        char *tmpstr = apr_palloc(pool, plen + 1);
+        memset(tmpstr, 0, plen + 1);
+        memcpy(tmpstr, &s[nowpos], plen);
+        dst = apr_pstrcat(pool, (dst) ? dst : "", tmpstr, NULL);
+      }
+      else {
+        plen = 0;
+      }
+      char *matchstr = ap_pregsub(pool, "$1", &s[nowpos], regexp->re_nsub + 1, match);
+      if (matchstr) {
+        DBG(r, "REQ[%X] matchstr:[%s]", TO_ADDR(r),matchstr);
+        dst = apr_pstrcat(pool, (dst) ? dst : "", "<input type='hidden' name='_chxj_cc' value='", cookie_id, "' />", matchstr, NULL);
+        plen += strlen(matchstr);
+      }
+      nowpos += plen;
+    }
+    else {
+      break;
+    }
+  }
+
+  if ((apr_size_t)nowpos < *len) {
+    apr_size_t plen = *len - nowpos;
+    char *tmpstr = apr_palloc(pool, plen + 1);
+    memset(tmpstr, 0, plen + 1);
+    memcpy(tmpstr, &s[nowpos], plen);
+    dst = apr_pstrcat(pool, (dst) ? dst : "", tmpstr, NULL);
+  }
+
+  *len = strlen(dst);
+  return dst;
+}
+
+char *
+chxj_cookie_only_mode(request_rec *r, const char *src, apr_size_t *len, cookie_t* cookie)
+{
+  char *s;
+  char *result;
+  char *dst = NULL;
+
+  DBG(r, "REQ[%X] start %s()", TO_ADDR(r),__func__);
+  s = chxj_encoding(r, src, len);
+
+  dst = s_convert_a_tag(r, s, len, cookie);
+  dst = s_convert_img_tag(r, dst, len, cookie);
+  dst = s_convert_form_tag(r, dst, len, cookie);
+
+  result = chxj_rencoding(r, dst, len);
+  DBG(r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
+  return result;
+}
 /*
  * vim:ts=2 et
  */