On 02/11/2008 03:27 PM, [EMAIL PROTECTED] wrote:
Author: dirkx
Date: Mon Feb 11 06:27:34 2008
New Revision: 620489

URL: http://svn.apache.org/viewvc?rev=620489&view=rev
Log:
Return a little bit more error information when, say a disk is full or 
something gets write protected. Note that in some cases mod_cache.c will_also_ 
log a 'cache: store_headers failed' subsequently.

Modified:
    httpd/httpd/trunk/modules/cache/mod_disk_cache.c

Modified: httpd/httpd/trunk/modules/cache/mod_disk_cache.c
URL: 
http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/cache/mod_disk_cache.c?rev=620489&r1=620488&r2=620489&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/cache/mod_disk_cache.c (original)
+++ httpd/httpd/trunk/modules/cache/mod_disk_cache.c Mon Feb 11 06:27:34 2008

@@ -846,13 +852,23 @@
                 dobj->prefix = NULL;
             }
- mkdir_structure(conf, dobj->hdrsfile, r->pool);
+            rv = mkdir_structure(conf, dobj->hdrsfile, r->pool);
+
+            if (rv != APR_SUCCESS) {
+                ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
+                    "disk_cache: could not create directory path to %s",
+                    dobj->hdrsfile);
+                return rv;
+            }

This non fatal here and may happen due to races with htcachelean. So I wouldn't
check the return value here and let it fail later in safe_file_rename if it
really doesn't work.


rv = apr_file_mktemp(&dobj->tfd, dobj->tempfile,
                                  APR_CREATE | APR_WRITE | APR_BINARY | 
APR_EXCL,
                                  r->pool);
if (rv != APR_SUCCESS) {
+                ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
+                    "disk_cache: could not create temp file %s",
+                    dobj->tempfile);
                 return rv;
             }
@@ -877,7 +893,6 @@
                 ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
                     "disk_cache: rename tempfile to varyfile failed: %s -> %s",
                     dobj->tempfile, dobj->hdrsfile);
-                apr_file_remove(dobj->tempfile, r->pool);

Why shouldn't we remove the tempfile in this case?

                 return rv;
             }

@@ -960,7 +987,13 @@
      */
     rv = apr_file_remove(dobj->hdrsfile, r->pool);
     if (rv != APR_SUCCESS) {
-        mkdir_structure(conf, dobj->hdrsfile, r->pool);
+        rv = mkdir_structure(conf, dobj->hdrsfile, r->pool);
+        if (rv != APR_SUCCESS) {
+            ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
+                     "disk_cache: creating directories for hdrsfile %s failed",
+                     dobj->hdrsfile);
+            return rv;
+        }

This non fatal here and may happen due to races with htcachelean. So I wouldn't
check the return value here and let it fail later in safe_file_rename if it
really doesn't work.

     }
rv = safe_file_rename(conf, dobj->tempfile, dobj->hdrsfile, r->pool);


Regards

RĂ¼diger

Reply via email to