projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
- more fixes for empty message info
[m6w6/ext-http]
/
http_cache_api.c
diff --git
a/http_cache_api.c
b/http_cache_api.c
index a03a9616f1dba581c81b7b706681dc268a57c1c1..b6c4fad5963ca79fa7041cbcf7080fb8094d1f14 100644
(file)
--- a/
http_cache_api.c
+++ b/
http_cache_api.c
@@
-45,9
+45,9
@@
PHP_HTTP_API char *_http_etag(const void *data_ptr, size_t data_len, http_send_m
return NULL;
} else {
size_t ssb_len;
return NULL;
} else {
size_t ssb_len;
- char ssb_buf[128]
= {0}
;
+ char ssb_buf[128];
- ssb_len = snprintf(ssb_buf,
127
, "%ld=%ld=%ld", (long) ssb.sb.st_mtime,
+ ssb_len = snprintf(ssb_buf,
sizeof(ssb_buf)
, "%ld=%ld=%ld", (long) ssb.sb.st_mtime,
(long) ssb.sb.st_ino,
(long) ssb.sb.st_size);
http_etag_update(ctx, ssb_buf, ssb_len);
(long) ssb.sb.st_ino,
(long) ssb.sb.st_size);
http_etag_update(ctx, ssb_buf, ssb_len);
@@
-63,9
+63,8
@@
PHP_HTTP_API time_t _http_last_modified(const void *data_ptr, http_send_mode dat
{
php_stream_statbuf ssb;
{
php_stream_statbuf ssb;
- switch (data_mode)
- {
- case SEND_DATA: return HTTP_GET_REQUEST_TIME();
+ switch (data_mode) {
+ case SEND_DATA: return HTTP_G->request.time;
case SEND_RSRC: return php_stream_stat((php_stream *) data_ptr, &ssb) ? 0 : ssb.sb.st_mtime;
default: return php_stream_stat_path((char *) data_ptr, &ssb) ? 0 : ssb.sb.st_mtime;
}
case SEND_RSRC: return php_stream_stat((php_stream *) data_ptr, &ssb) ? 0 : ssb.sb.st_mtime;
default: return php_stream_stat_path((char *) data_ptr, &ssb) ? 0 : ssb.sb.st_mtime;
}
@@
-79,13
+78,16
@@
PHP_HTTP_API zend_bool _http_match_last_modified_ex(const char *entry, time_t t,
zval *zmodified;
char *modified, *chr_ptr;
zval *zmodified;
char *modified, *chr_ptr;
- HTTP_GSC(zmodified, entry, !enforce_presence);
+ if (!(zmodified = http_get_server_var(entry, 1))) {
+ return !enforce_presence;
+ }
modified = estrndup(Z_STRVAL_P(zmodified), Z_STRLEN_P(zmodified));
if ((chr_ptr = strrchr(modified, ';'))) {
chr_ptr = 0;
}
modified = estrndup(Z_STRVAL_P(zmodified), Z_STRLEN_P(zmodified));
if ((chr_ptr = strrchr(modified, ';'))) {
chr_ptr = 0;
}
- retval = (t <= http_parse_date(modified));
+
+ retval = (t <= http_parse_date_ex(modified, 1));
efree(modified);
return retval;
}
efree(modified);
return retval;
}
@@
-98,7
+100,9
@@
PHP_HTTP_API zend_bool _http_match_etag_ex(const char *entry, const char *etag,
char *quoted_etag;
zend_bool result;
char *quoted_etag;
zend_bool result;
- HTTP_GSC(zetag, entry, !enforce_presence);
+ if (!(zetag = http_get_server_var_ex(entry, strlen(entry)+1, 1))) {
+ return !enforce_presence;
+ }
if (NULL != strchr(Z_STRVAL_P(zetag), '*')) {
return 1;
if (NULL != strchr(Z_STRVAL_P(zetag), '*')) {
return 1;
@@
-184,7
+188,7
@@
PHP_HTTP_API STATUS _http_start_ob_etaghandler(TSRMLS_D)
}
HTTP_G->etag.started = 1;
}
HTTP_G->etag.started = 1;
- return php_start_ob_buffer_named("ob_etaghandler", HTTP_G->send.buffer_size,
1
TSRMLS_CC);
+ return php_start_ob_buffer_named("ob_etaghandler", HTTP_G->send.buffer_size,
0
TSRMLS_CC);
}
PHP_HTTP_API zend_bool _http_interrupt_ob_etaghandler(TSRMLS_D)
}
PHP_HTTP_API zend_bool _http_interrupt_ob_etaghandler(TSRMLS_D)
@@
-229,6
+233,8
@@
void _http_ob_etaghandler(char *output, uint output_len,
http_send_etag_ex(etag, strlen(etag), &sent_header);
if (http_match_etag("HTTP_IF_NONE_MATCH", etag)) {
http_send_etag_ex(etag, strlen(etag), &sent_header);
if (http_match_etag("HTTP_IF_NONE_MATCH", etag)) {
+ /* force exit; ob within ob does not work */
+ HTTP_G->force_exit = 1;
http_exit_ex(304, sent_header, etag, 0);
}
http_exit_ex(304, sent_header, etag, 0);
}