X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_api.c;h=a5b898d8f6931ce91d6a33ff269686b85d4e910f;hp=e1dae2dbcbe09e4b07d6c72461f7782ddfcc9e76;hb=51f68d1c8028144d2db1e415fdf14afb1442649e;hpb=86e60ef185c731dd86cef3c849282eb4f33edd4a diff --git a/http_api.c b/http_api.c index e1dae2d..a5b898d 100644 --- a/http_api.c +++ b/http_api.c @@ -34,6 +34,7 @@ #include "ext/standard/php_string.h" #include "ext/standard/php_smart_str.h" #include "ext/standard/php_lcg.h" +#include "ext/standard/php_filestat.h" #include "SAPI.h" @@ -1061,7 +1062,7 @@ PHP_HTTP_API inline time_t _http_lmod(const void *data_ptr, const http_send_mode default: { zval mtime; - php_stat(Z_STRVAL_P((zval *) data_ptr), Z_STRLEN_P((zval *) data_ptr), FS_MTIME, &mtime TSRMLS_CC); + php_stat(Z_STRVAL_P((zval *) data_ptr), Z_STRLEN_P((zval *) data_ptr), 6, &mtime TSRMLS_CC); return Z_LVAL(mtime); } } @@ -1329,7 +1330,7 @@ PHP_HTTP_API STATUS _http_send_content_type(const char *content_type, /* {{{ STATUS http_send_content_disposition(char *, size_t, zend_bool) */ PHP_HTTP_API STATUS _http_send_content_disposition(const char *filename, - const size_t f_len, const zend_bool send_inline TSRMLS_DC) + const size_t f_len, const int send_inline TSRMLS_DC) { STATUS status; char *cd_header; @@ -1936,15 +1937,14 @@ PHP_HTTP_API STATUS _http_chunked_decode(const char *encoded, } /* }}} */ -/* {{{ proto STATUS http_split_response(zval *, zval *, zval *) */ -PHP_HTTP_API STATUS _http_split_response(const zval *zresponse, zval *zheaders, - zval *zbody TSRMLS_DC) +/* {{{ proto STATUS http_split_response_ex(char *, size_t, zval *, zval *) */ +PHP_HTTP_API STATUS _http_split_response_ex( char *response, + size_t response_len, zval *zheaders, zval *zbody TSRMLS_DC) { - char *header, *response, *body = NULL; - long response_len = Z_STRLEN_P(zresponse); - header = response = Z_STRVAL_P(zresponse); + char *body = NULL; + char *header = response; - while ((response - Z_STRVAL_P(zresponse) + 3) < response_len) { + while ((response - header + 4) < response_len) { if ( (*response++ == '\r') && (*response++ == '\n') && (*response++ == '\r') && @@ -1960,7 +1960,7 @@ PHP_HTTP_API STATUS _http_split_response(const zval *zresponse, zval *zheaders, Z_TYPE_P(zbody) = IS_NULL; } - return http_parse_headers(header, body - Z_STRVAL_P(zresponse), zheaders); + return http_parse_headers(header, body ? body - header : response_len, zheaders); } /* }}} */