OSDN Git Service

*** empty log message ***
authorkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Thu, 29 Jun 2006 01:15:17 +0000 (01:15 +0000)
committerkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Thu, 29 Jun 2006 01:15:17 +0000 (01:15 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/trunk@1259 1a406e8e-add9-4483-a2c8-d8cac5b7c224

17 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
src/qs_log.c

index 832224e..a19bb87 100644 (file)
@@ -38,5 +38,5 @@ typedef struct _ctml10_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);
+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);
 #endif
index aa286ea..988afa9 100644 (file)
@@ -44,5 +44,6 @@ chxj_exchange_chtml20(
                   const char* src,
                   apr_size_t srclen,
                   apr_size_t *dstlen,
-                  chxjconvrule_entry* entryp);
+                  chxjconvrule_entry* entryp,
+                  const char* cookie_id);
 #endif
index 469e63e..3a16e44 100644 (file)
@@ -44,5 +44,6 @@ chxj_exchange_chtml30(
   const char*     src,
   apr_size_t      srclen,
   apr_size_t*     dstlen,
-  chxjconvrule_entry* entryp);
+  chxjconvrule_entry* entryp,
+  const char* cookie_id);
 #endif
index 7ca3787..48f334e 100644 (file)
@@ -19,7 +19,7 @@
 
 #include "mod_chxj.h"
 
-extern void chxj_save_cookie(request_rec *r);
+extern char* chxj_save_cookie(request_rec *r);
 
 #endif
 /*
index 63743ef..f43d6bd 100644 (file)
@@ -101,7 +101,8 @@ char* chxj_exchange_hdml(
   const char*         src,
   apr_size_t          srclen,
   apr_size_t*         dstlen,
-  chxjconvrule_entry* entryp) ;
+  chxjconvrule_entry* entryp,
+  const char* cookie_id);
 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 40dbd18..0f5f607 100644 (file)
@@ -44,5 +44,6 @@ chxj_exchange_jhtml(
   const char* src,
   apr_size_t srclen,
   apr_size_t *dstlen,
-  chxjconvrule_entry* entryp) ;
+  chxjconvrule_entry* entryp,
+  const char* cookie_id) ;
 #endif
index f8a5139..7e53893 100644 (file)
@@ -98,7 +98,8 @@ typedef struct _converter_t {
                     const char*                 src, 
                     apr_size_t                  srclen, 
                     apr_size_t*                 dstlen,
-                    struct _chxjconvrule_entry* entryp);
+                    struct _chxjconvrule_entry* entryp,
+                    const char*                 cookie_id);
 
   char* (*encoder)(request_rec* r,
                    const char*  src,
index 97073c1..a751fd8 100644 (file)
@@ -43,6 +43,7 @@ char* chxj_exchange_xhtml_mobile_1_0(
   const char* src,
   apr_size_t srclen,
   apr_size_t *dstlen,
-  chxjconvrule_entry* entryp) ;
+  chxjconvrule_entry* entryp,
+  const char* cookie_id) ;
 
 #endif
index f52fb41..153085c 100644 (file)
@@ -314,7 +314,8 @@ chxj_exchange_chtml10(
   const char* src,
   apr_size_t srclen,
   apr_size_t *dstlen,
-  chxjconvrule_entry* entryp
+  chxjconvrule_entry* entryp,
+  const char* cookie_id
 )
 {
   char*     dst = NULL;
index 0d58aba..6d593f5 100644 (file)
@@ -316,7 +316,8 @@ chxj_exchange_chtml20(
   const char* src,
   apr_size_t srclen,
   apr_size_t *dstlen,
-  chxjconvrule_entry* entryp
+  chxjconvrule_entry* entryp,
+  const char* cookie_id
 )
 {
   char*     dst = NULL;
index 6ed8248..4955340 100644 (file)
@@ -315,7 +315,8 @@ chxj_exchange_chtml30(
   const char* src,
   apr_size_t srclen,
   apr_size_t *dstlen,
-  chxjconvrule_entry* entryp
+  chxjconvrule_entry* entryp,
+  const char* cookie_id
 )
 {
   char*     dst = NULL;
index 885a22c..514c62f 100644 (file)
@@ -27,7 +27,7 @@
 /*
  *
  */
-void
+char*
 chxj_save_cookie(request_rec* r)
 {
   int   ii;
@@ -42,23 +42,18 @@ chxj_save_cookie(request_rec* r)
   char*             uuid_string;
   unsigned char*    md5_value;
   char*             md5_string;
+  mod_chxj_global_config* gconf;
+
 
 
   DBG(r, "start chxj_save_cookie()");
 
+  md5_string = NULL;
+
+  gconf = ap_get_module_config(r->server->module_config, &chxj_module);
   headers = (apr_array_header_t*)apr_table_elts(r->headers_out);
   entryp = (apr_table_entry_t*)headers->elts;
 
-  retval = apr_dbm_open_ex(&f, 
-                           "default", 
-                           "/tmp/cookie.db", 
-                           APR_DBM_RWCREATE, 
-                           APR_OS_DEFAULT, 
-                           r->pool);
-  if (retval != APR_SUCCESS) {
-    ERR2(r, "could not open dbm (type %s) auth file: %s", "default", "/tmp/cookie.db");
-    return;
-  }
 
   cookie = apr_palloc(r->pool, 1);
   cookie[0] = 0;
@@ -71,6 +66,26 @@ chxj_save_cookie(request_rec* r)
       DBG(r, "=====================================");
     }
   }
+
+  if (strlen(cookie) == 0) {
+    DBG(r, "no cookie");
+    return NULL;
+  }
+
+  apr_global_mutex_lock(gconf->cookie_db_lock);
+
+  retval = apr_dbm_open_ex(&f, 
+                           "default", 
+                           "/tmp/cookie.db", 
+                           APR_DBM_RWCREATE, 
+                           APR_OS_DEFAULT, 
+                           r->pool);
+  if (retval != APR_SUCCESS) {
+    ERR2(r, "could not open dbm (type %s) auth file: %s", "default", "/tmp/cookie.db");
+    apr_global_mutex_unlock(gconf->cookie_db_lock);
+    return NULL;
+  }
+
   apr_uuid_get(&uuid);
   uuid_string = apr_palloc(r->pool, APR_UUID_FORMATTED_LENGTH + 1);
   memset(uuid_string, 0, APR_UUID_FORMATTED_LENGTH + 1);
@@ -120,8 +135,10 @@ chxj_save_cookie(request_rec* r)
 
 on_error:
   apr_dbm_close(f);
+  apr_global_mutex_unlock(gconf->cookie_db_lock);
 
   DBG(r, "end   chxj_save_cookie()");
+  return md5_string;
 }
 
 /*
index 8a3ba5b..ea18b2e 100644 (file)
@@ -310,12 +310,14 @@ tag_handler hdml_handler[] = {
  * @return         The character string after the converting is returned.
  */
 char*
-chxj_exchange_hdml(request_rec* r, 
-                   device_table* spec, 
-                   const char* src, 
-                   apr_size_t srclen, 
-                   apr_size_t* dstlen,
-                   chxjconvrule_entry* entryp
+chxj_exchange_hdml(
+  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*     dst = NULL;
index 0b5649d..46e010a 100644 (file)
@@ -307,7 +307,8 @@ chxj_exchange_jhtml(
   const char* src,
   apr_size_t srclen,
   apr_size_t *dstlen,
-  chxjconvrule_entry* entryp
+  chxjconvrule_entry* entryp,
+  const char* cookie_id
 )
 {
   char*     dst = NULL;
index 2ed8e79..c20f299 100644 (file)
@@ -317,7 +317,8 @@ chxj_exchange_xhtml_mobile_1_0(
   const char*     src,
   apr_size_t      srclen,
   apr_size_t*     dstlen,
-  chxjconvrule_entry* entryp
+  chxjconvrule_entry* entryp,
+  const char* cookie_id
 )
 {
   char*     dst = NULL;
index 007ad6c..ea76f3b 100644 (file)
@@ -188,6 +188,7 @@ chxj_exchange(request_rec *r, const char** src, apr_size_t* len)
   char*               user_agent;
   char*               dst;
   char*               tmp;
+  char*               cookie_id;
   mod_chxj_config*    dconf; 
   chxjconvrule_entry* entryp;
 
@@ -224,7 +225,7 @@ chxj_exchange(request_rec *r, const char** src, apr_size_t* len)
   /*
    * save cookie.
    */
-  chxj_save_cookie(r);
+  cookie_id = chxj_save_cookie(r);
 
   if (!r->header_only) {
     device_table* spec = chxj_specified_device(r, user_agent);
@@ -235,9 +236,21 @@ chxj_exchange(request_rec *r, const char** src, apr_size_t* len)
 
     if (convert_routine[spec->html_spec_type].converter) {
       if (tmp)
-        dst = convert_routine[spec->html_spec_type].converter(r, spec, tmp, *len, len, entryp);
+        dst = convert_routine[spec->html_spec_type].converter(r, 
+                                                              spec, 
+                                                              tmp, 
+                                                              *len, 
+                                                              len, 
+                                                              entryp, 
+                                                              cookie_id);
       else
-        dst = convert_routine[spec->html_spec_type].converter(r, spec, *src, *len, len, entryp);
+        dst = convert_routine[spec->html_spec_type].converter(r,
+                                                              spec, 
+                                                              tmp, 
+                                                              *len, 
+                                                              len, 
+                                                              entryp, 
+                                                              cookie_id);
     }
   }
 
@@ -778,28 +791,6 @@ chxj_input_filter(ap_filter_t*        f,
   return APR_SUCCESS;
 }
 
-/**
- * It is processing when the module ends. The shared memory etc. are liberated.
- *
- * @param data [i]  The pointer to the server_rec structure is specified. 
- * @return APR_SUCCESS
- *
- */
-apr_status_t 
-chxj_init_module_kill(void *data)
-{
-  server_rec *base_server = (server_rec *)data;
-  mod_chxj_global_config* conf;
-
-  /*--------------------------------------------------------------------------*/
-  /* The setting of each server is acquired.                                  */
-  /*--------------------------------------------------------------------------*/
-  if (base_server)
-    conf = ap_get_module_config(base_server->module_config, &chxj_module);
-
-  return APR_SUCCESS;
-}
-
 
 static mod_chxj_global_config*
 chxj_global_config_create(apr_pool_t* pool, server_rec* s)
index 25bb1e8..307edb5 100644 (file)
@@ -21,7 +21,6 @@
 #include "http_log.h"
 
 
-extern apr_status_t chxj_init_module_kill(void *data);
 
 void
 qs_log(Doc* doc, int log_level,const char* f, int l, char* msg) 
@@ -80,7 +79,6 @@ qs_log(Doc* doc, int log_level,const char* f, int l, char* msg)
 #endif
     if (doc->r) {
       ap_log_rerror(f,l, APLOG_CRIT, 0, doc->r, msg);
-      chxj_init_module_kill((void*)doc->r->server);
     }
     qs_all_free(doc, QX_LOGMARK);
     _exit(0);