*/
PHP_METHOD(HttpResponse, setData)
{
+ char *etag;
zval *the_data;
if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &the_data)) {
RETURN_FALSE;
}
- if (!(Z_LVAL_P(convert_to_type_ex(IS_LONG, GET_STATIC_PROP(lastModified))) > 0)) {
- UPD_STATIC_PROP(long, lastModified, http_last_modified(the_data, SEND_DATA));
- }
- if (!Z_STRLEN_P(convert_to_type_ex(IS_STRING, GET_STATIC_PROP(eTag)))) {
- char *etag = http_etag(Z_STRVAL_P(the_data), Z_STRLEN_P(the_data), SEND_DATA);
- if (etag) {
- UPD_STATIC_PROP(string, eTag, etag);
- efree(etag);
- }
+ UPD_STATIC_PROP(long, lastModified, http_last_modified(the_data, SEND_DATA));
+ if (etag = http_etag(Z_STRVAL_P(the_data), Z_STRLEN_P(the_data), SEND_DATA)) {
+ UPD_STATIC_PROP(string, eTag, etag);
+ efree(etag);
}
RETURN_TRUE;
*/
PHP_METHOD(HttpResponse, setStream)
{
+ char *etag;
zval *the_stream;
php_stream *the_real_stream;
php_stream_statbuf ssb;
}
zend_list_addref(Z_LVAL_P(the_stream));
- if (!(Z_LVAL_P(convert_to_type_ex(IS_LONG, GET_STATIC_PROP(lastModified))) > 0)) {
- UPD_STATIC_PROP(long, lastModified, http_last_modified(the_real_stream, SEND_RSRC));
- }
- if (!Z_STRLEN_P(convert_to_type_ex(IS_STRING, GET_STATIC_PROP(eTag)))) {
- char *etag = http_etag(the_real_stream, 0, SEND_RSRC);
- if (etag) {
- UPD_STATIC_PROP(string, eTag, etag);
- efree(etag);
- }
+ UPD_STATIC_PROP(long, lastModified, http_last_modified(the_real_stream, SEND_RSRC));
+ if (etag = http_etag(the_real_stream, 0, SEND_RSRC)) {
+ UPD_STATIC_PROP(string, eTag, etag);
+ efree(etag);
}
RETURN_TRUE;
*/
PHP_METHOD(HttpResponse, setFile)
{
- char *the_file;
+ char *the_file, *etag;
int file_len;
php_stream_statbuf ssb;
RETURN_FALSE;
}
- if (!(Z_LVAL_P(convert_to_type_ex(IS_LONG, GET_STATIC_PROP(lastModified))) > 0)) {
- UPD_STATIC_PROP(long, lastModified, http_last_modified(the_file, -1));
- }
- if (!Z_STRLEN_P(convert_to_type_ex(IS_STRING, GET_STATIC_PROP(eTag)))) {
- char *etag = http_etag(the_file, 0, -1);
- if (etag) {
- UPD_STATIC_PROP(string, eTag, etag);
- efree(etag);
- }
+ UPD_STATIC_PROP(long, lastModified, http_last_modified(the_file, -1));
+ if (etag = http_etag(the_file, 0, -1)) {
+ UPD_STATIC_PROP(string, eTag, etag);
+ efree(etag);
}
RETURN_TRUE;
--- /dev/null
+--TEST--
+sane crc etags
+--SKIPIF--
+<?php
+include 'skip.inc';
+chkver(5.1);
+?>
+--FILE--
+<?php
+echo "-TEST\n";
+
+ini_set('http.etag_mode', HTTP_ETAG_CRC32);
+HttpResponse::setData("abc");
+$php = HttpResponse::getEtag();
+
+ini_set('http.etag_mode', HTTP_ETAG_MHASH_CRC32);
+HttpResponse::setData("abc");
+$crc = HttpResponse::getEtag();
+
+ini_set('http.etag_mode', HTTP_ETAG_MHASH_CRC32B);
+HttpResponse::setData("abc");
+$equ = HttpResponse::getEtag();
+
+echo $php,"\n", $equ,"\n", $crc,"\n";
+
+var_dump($equ === $php);
+var_dump($equ !== $crc);
+
+echo "Done\n";
+--EXPECTF--
+%sTEST
+c2412435
+c2412435
+73bb8c64
+bool(true)
+bool(true)
+Done