OSDN Git Service

* Added Spec Cache Cleaner.
authorAtsushi Konno <konn@users.sourceforge.jp>
Sun, 6 Mar 2011 14:35:46 +0000 (23:35 +0900)
committerAtsushi Konno <konn@users.sourceforge.jp>
Sun, 6 Mar 2011 14:35:46 +0000 (23:35 +0900)
include/chxj_specified_device.h
src/chxj_specified_device.c
src/mod_chxj.c

index ca955cb..f7b9087 100755 (executable)
@@ -132,5 +132,6 @@ extern converter_t convert_routine[];
 extern device_table* chxj_specified_device(
   request_rec             *r, 
   const char              *user_agent);
+extern void chxj_specified_cleanup(request_rec *r);
 
 #endif
index 5a421bb..b04c2b0 100755 (executable)
@@ -391,6 +391,15 @@ s_specified_device_from_tsv(request_rec *r,device_table *spec,const char *user_a
 }
 
 
+void
+chxj_specified_cleanup(request_rec *r)
+{
+  DBG(r,"REQ[%X] start %s()",TO_ADDR(r),__func__);
+  v_spec = NULL;
+  DBG(r,"REQ[%X] end %s()",TO_ADDR(r),__func__);
+}
+
+
 /*
  * vim:ts=2 et
  */
index e5addbf..fec4515 100755 (executable)
@@ -1123,6 +1123,7 @@ chxj_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
     s_add_no_cache_headers(r, entryp);
     /* must not send body. */
     rv = pass_data_to_filter(f, "", 0);
+    chxj_specified_cleanup(r);
     DBG(f->r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
     return rv;
   }
@@ -1177,12 +1178,14 @@ chxj_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
       s_add_no_cache_headers(r, entryp);
       ap_pass_brigade(f->next, bb);
       DBG(f->r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
+      chxj_specified_cleanup(r);
       return APR_SUCCESS;
     }
   }
   else {
     DBG(r, "REQ[%X] not convert content-type:[(null)]", TO_ADDR(r));
     ap_pass_brigade(f->next, bb);
+    chxj_specified_cleanup(r);
     DBG(f->r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
     return APR_SUCCESS;
   }
@@ -1301,6 +1304,7 @@ chxj_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
             if (sts != OK) {
               ERR(r, "REQ[%X] qrcode create failed.", TO_ADDR(r));
               chxj_cookie_unlock(r, lock);
+              chxj_specified_cleanup(r);
               DBG(f->r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
               return sts;
             }
@@ -1372,6 +1376,7 @@ chxj_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
                                    (const char *)ctx->buffer, 
                                    (apr_size_t)ctx->len);
         }
+        chxj_specified_cleanup(r);
         DBG(f->r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
         return rv;
       }
@@ -1418,13 +1423,15 @@ chxj_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
         apr_table_setn(r->headers_out, "Content-Length", "0");
         s_add_no_cache_headers(r, entryp);
         rv = pass_data_to_filter(f, (const char *)"", (apr_size_t)0);
+        chxj_specified_cleanup(r);
         return rv;
       }
     }
   }
   apr_brigade_destroy(bb);
 
-  DBG(f->r, "REQ[%X] end %s()", TO_ADDR(r),__func__);
+  chxj_specified_cleanup(r);
+  DB(f->r, "REQ[%X]nend %s()", TO_ADDR(r),__func__);
 
   return APR_SUCCESS;
 }