#include <wand/magick_wand.h>
+#if !defined(LONG_LONG_MAX) && defined(LLONG_MAX)
+# define LONG_LONG_MAX LLONG_MAX
+#endif
+
#define EXIT_MAGICK_ERROR() \
do { \
char *description; ExceptionType severity; \
description=MagickGetException(magick_wand,&severity); \
- ap_log_rerror(APLOG_MARK,APLOG_DEBUG, 0, r,"%s %s %d %s\n",__FILE__,(__func__),__LINE__,description); \
+ ap_log_rerror(APLOG_MARK,APLOG_ERR, 0, r,"%s %s %d %s\n",__FILE__,(__func__),__LINE__,description); \
description=(char *) MagickRelinquishMemory(description); \
DestroyMagickWand(magick_wand); \
} while(0)
query_string_param_t *qsp,
mod_chxj_config *conf);
-static apr_status_t s_send_cache_file(device_table *spec,
+static apr_status_t s_send_cache_file(mod_chxj_config *conf,
+ device_table *spec,
query_string_param_t *query_string,
request_rec *r,
const char *tmpfile);
DBG(r,"REQ[%X] color=[%d]", TO_ADDR(r), spec->color);
if (! r->header_only) {
- rv = s_send_cache_file(spec, qsp,r, tmpfile);
+ rv = s_send_cache_file(conf, spec, qsp,r, tmpfile);
}
else {
rv = s_header_only_cache_file(spec, qsp, r, tmpfile);
/*------------------------------------------------------------------------*/
rv = apr_file_open(&fin,
r->filename,
- APR_READ|APR_BINARY ,
+ APR_FOPEN_READ | APR_FOPEN_BINARY | APR_FOPEN_BUFFERED | APR_FOPEN_SHARELOCK | APR_FOPEN_SENDFILE_ENABLED,
APR_OS_DEFAULT,
r->pool);
if (rv != APR_SUCCESS) {
/* to cache */
rv = apr_file_open(&fout, tmpfile,
- APR_WRITE| APR_CREATE | APR_BINARY | APR_SHARELOCK ,APR_OS_DEFAULT,
+ APR_FOPEN_WRITE| APR_FOPEN_CREATE | APR_FOPEN_BINARY | APR_SHARELOCK ,
+ APR_OS_DEFAULT,
r->pool);
if (rv != APR_SUCCESS) {
DestroyMagickWand(magick_wand);
- ERR(r,"file open error.[%s]", tmpfile);
+ ERR(r,"REQ[%X] file open error.[%s]", TO_ADDR(r), tmpfile);
if (sv_writedata) free(sv_writedata);
return HTTP_INTERNAL_SERVER_ERROR;
}
static apr_status_t
-s_send_cache_file(device_table *spec, query_string_param_t *query_string, request_rec *r, const char *tmpfile)
+s_send_cache_file(
+ mod_chxj_config *conf,
+ device_table *spec,
+ query_string_param_t *query_string,
+ request_rec *r,
+ const char *tmpfile)
{
apr_status_t rv;
apr_finfo_t st;
apr_file_t *fout;
apr_size_t sendbyte;
char *contentLength;
- mod_chxj_config *conf = ap_get_module_config(r->per_dir_config, &chxj_module);
rv = apr_stat(&st, tmpfile, APR_FINFO_MIN, r->pool);
if (rv != APR_SUCCESS)
DBG(r, "REQ[%X] offset:[%ld]", TO_ADDR(r), query_string->offset);
DBG(r, "REQ[%X] count:[%ld]", TO_ADDR(r), query_string->count);
+ /* for mod_cache */
+ {
+ apr_table_setn(r->headers_out, "Vary", "User-Agent");
+ apr_table_setn(r->err_headers_out, "Vary", "User-Agent");
+ ap_update_mtime(r, st.mtime);
+ ap_set_last_modified(r);
+ }
+
if (query_string->mode != IMG_CONV_MODE_EZGET && query_string->name == NULL) {
contentLength = apr_psprintf(r->pool, "%d", (int)st.size);
apr_table_setn(r->headers_out, "Content-Length", (const char*)contentLength);
}
}
rv = apr_file_open(&fout, tmpfile,
- APR_READ | APR_BINARY, APR_OS_DEFAULT, r->pool);
+ APR_FOPEN_READ | APR_FOPEN_BINARY | APR_FOPEN_BUFFERED | APR_FOPEN_SHARELOCK | APR_FOPEN_SENDFILE_ENABLED,
+ APR_OS_DEFAULT, r->pool);
if (rv != APR_SUCCESS) {
DBG(r, "cache file open failed[%s]", tmpfile);
return HTTP_NOT_FOUND;
DBG(r, "Content-Length:[%d]", (int)st.size);
rv = apr_file_open(&fout, tmpfile,
- APR_READ | APR_BINARY, APR_OS_DEFAULT, r->pool);
+ APR_FOPEN_READ | APR_FOPEN_BINARY | APR_FOPEN_BUFFERED | APR_FOPEN_SHARELOCK | APR_FOPEN_SENDFILE_ENABLED,
+ APR_OS_DEFAULT, r->pool);
if (rv != APR_SUCCESS) {
DBG(r,"tmpfile open failed[%s]", tmpfile);
if (rv != APR_SUCCESS)
return HTTP_NOT_FOUND;
+ /* for mod_cache */
+ {
+ apr_table_setn(r->headers_out, "Vary", "User-Agent");
+ apr_table_setn(r->err_headers_out, "Vary", "User-Agent");
+ ap_update_mtime(r, st.mtime);
+ ap_set_last_modified(r);
+ }
+
rv = apr_file_open(&fout, originalfile,
- APR_READ | APR_BINARY, APR_OS_DEFAULT, r->pool);
+ APR_FOPEN_READ | APR_FOPEN_BINARY | APR_FOPEN_BUFFERED | APR_FOPEN_SHARELOCK | APR_FOPEN_SENDFILE_ENABLED,
+ APR_OS_DEFAULT, r->pool);
if (rv != APR_SUCCESS) {
DBG(r, "originalfile open failed[%s]", originalfile);
return HTTP_NOT_FOUND;
v_docomo_serial_pattern3 = chxj_compile_for_preg_replace(p, ";icc[^;\\)]+");
}
if (!v_softbank_serial_pattern1) {
- v_softbank_serial_pattern1 = chxj_compile_for_preg_replace(p, "/SN[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z] ");
+ v_softbank_serial_pattern1 = chxj_compile_for_preg_replace(p, "/SN[0-9a-zA-Z]+ ");
}
}
pos += 4;
memcpy(&result[pos], &data[PNG_SIG_AND_IHDR_SZ] , *len - PNG_SIG_AND_IHDR_SZ);
*len = *len + total_tEXt_size;
- DBG(r, "REQ[%X] writebyte:[%d]", (unsigned int)(apr_size_t)r, *len);
+ DBG(r, "REQ[%X] writebyte:[%d]", (unsigned int)(apr_size_t)r, (unsigned int)*len);
}
else {
result = data;