}
}
-static void mkdir_structure(disk_cache_conf *conf, const char *file, apr_pool_t *pool)
+static apr_status_t mkdir_structure(disk_cache_conf *conf, const char *file, apr_pool_t *pool)
{
apr_status_t rv;
char *p;
rv = apr_dir_make(file,
APR_UREAD|APR_UWRITE|APR_UEXECUTE, pool);
if (rv != APR_SUCCESS && !APR_STATUS_IS_EEXIST(rv)) {
- /* XXX */
+ return rv;
}
*p = '/';
++p;
}
+ return APR_SUCCESS;
}
/* htcacheclean may remove directories underneath us.
/* 1000 micro-seconds aka 0.001 seconds. */
apr_sleep(1000);
- mkdir_structure(conf, dest, pool);
+ rv = mkdir_structure(conf, dest, pool);
+ if (rv != APR_SUCCESS)
+ continue;
rv = apr_file_rename(src, dest, pool);
}
#endif
rc = apr_file_open(&dobj->fd, dobj->datafile, flags, 0, r->pool);
if (rc != APR_SUCCESS) {
- /* XXX: Log message */
+ ap_log_error(APLOG_MARK, APLOG_ERR, rc, r->server,
+ "disk_cache: Cannot open info header file %s", dobj->datafile);
return DECLINED;
}
/* Read the bytes to setup the cache_info fields */
rc = file_cache_recall_mydata(dobj->hfd, info, dobj, r);
if (rc != APR_SUCCESS) {
- /* XXX log message */
+ ap_log_error(APLOG_MARK, APLOG_ERR, rc, r->server,
+ "disk_cache: Cannot read header file %s", dobj->hdrsfile);
return DECLINED;
}
/* This case should not happen... */
if (!dobj->hfd) {
- /* XXX log message */
+ ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server,
+ "disk_cache: recalling headers; but no header fd for %s", dobj->name);
return APR_NOTFOUND;
}
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;
+ }
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;
}
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);
return rv;
}
APR_BUFFERED | 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;
}
rv = apr_file_writev(dobj->hfd, (const struct iovec *) &iov, 2, &amt);
if (rv != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
+ "disk_cache: could not write info to header file %s",
+ dobj->hdrsfile);
return rv;
}
r->err_headers_out);
rv = store_table(dobj->hfd, headers_out);
if (rv != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
+ "disk_cache: could not write out-headers to header file %s",
+ dobj->hdrsfile);
return rv;
}
}
r->server);
rv = store_table(dobj->hfd, headers_in);
if (rv != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
+ "disk_cache: could not write in-headers to header file %s",
+ dobj->hdrsfile);
return rv;
}
}
*/
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;
+ }
}
rv = safe_file_rename(conf, dobj->tempfile, dobj->hdrsfile, r->pool);