X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_filter_api.c;h=d072787bea510a079a2ff9c7101d7e4ed6401163;hp=35cff1cdb2b837937cc6418c26ebd2e8462e260d;hb=976c6c8c58c93c4ab74e9c23e1cf5b31b2b1bd78;hpb=4fcbd8e8ae31611c5197ff2369673b5939fc2b80 diff --git a/http_filter_api.c b/http_filter_api.c index 35cff1c..d072787 100644 --- a/http_filter_api.c +++ b/http_filter_api.c @@ -6,7 +6,7 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2006, Michael Wallner | + | Copyright (c) 2004-2007, Michael Wallner | +--------------------------------------------------------------------+ */ @@ -74,7 +74,7 @@ PHP_MINIT_FUNCTION(http_filter) php_stream_bucket_append(buckets_out, __buck TSRMLS_CC); \ } -typedef struct { +typedef struct _http_chunked_decode_filter_buffer_t { phpstr buffer; ulong hexlen; } HTTP_FILTER_BUFFER(chunked_decode); @@ -105,7 +105,7 @@ static HTTP_FILTER_FUNCTION(chunked_decode) *bytes_consumed += ptr->buflen; } - if ((size_t) -1 == phpstr_append(PHPSTR(buffer), ptr->buf, ptr->buflen)) { + if (PHPSTR_NOMEM == phpstr_append(PHPSTR(buffer), ptr->buf, ptr->buflen)) { return PSFS_ERR_FATAL; } @@ -165,8 +165,8 @@ static HTTP_FILTER_FUNCTION(chunked_decode) /* ignore preceeding CRLFs (too loose?) */ while (off < PHPSTR_LEN(buffer) && ( - PHPSTR_VAL(buffer)[off] == 0xa || - PHPSTR_VAL(buffer)[off] == 0xd)) { + PHPSTR_VAL(buffer)[off] == '\n' || + PHPSTR_VAL(buffer)[off] == '\r')) { ++off; } if (off) { @@ -313,8 +313,10 @@ static HTTP_FILTER_FUNCTION(deflate) if (ptr->buflen) { http_encoding_deflate_stream_update(buffer, ptr->buf, ptr->buflen, &encoded, &encoded_len); if (encoded) { - out_avail = 1; - NEW_BUCKET(encoded, encoded_len); + if (encoded_len) { + out_avail = 1; + NEW_BUCKET(encoded, encoded_len); + } efree(encoded); } } @@ -331,8 +333,10 @@ static HTTP_FILTER_FUNCTION(deflate) http_encoding_deflate_stream_flush(buffer, &encoded, &encoded_len); if (encoded) { - out_avail = 1; - NEW_BUCKET(encoded, encoded_len); + if (encoded_len) { + out_avail = 1; + NEW_BUCKET(encoded, encoded_len); + } efree(encoded); } } @@ -343,8 +347,10 @@ static HTTP_FILTER_FUNCTION(deflate) http_encoding_deflate_stream_finish(buffer, &encoded, &encoded_len); if (encoded) { - out_avail = 1; - NEW_BUCKET(encoded, encoded_len); + if (encoded_len) { + out_avail = 1; + NEW_BUCKET(encoded, encoded_len); + } efree(encoded); } } @@ -378,8 +384,10 @@ static HTTP_FILTER_FUNCTION(inflate) if (ptr->buflen) { http_encoding_inflate_stream_update(buffer, ptr->buf, ptr->buflen, &decoded, &decoded_len); if (decoded) { - out_avail = 1; - NEW_BUCKET(decoded, decoded_len); + if (decoded_len) { + out_avail = 1; + NEW_BUCKET(decoded, decoded_len); + } efree(decoded); } } @@ -396,8 +404,10 @@ static HTTP_FILTER_FUNCTION(inflate) http_encoding_inflate_stream_flush(buffer, &decoded, &decoded_len); if (decoded) { - out_avail = 1; - NEW_BUCKET(decoded, decoded_len); + if (decoded_len) { + out_avail = 1; + NEW_BUCKET(decoded, decoded_len); + } efree(decoded); } } @@ -408,8 +418,10 @@ static HTTP_FILTER_FUNCTION(inflate) http_encoding_inflate_stream_finish(buffer, &decoded, &decoded_len); if (decoded) { - out_avail = 1; - NEW_BUCKET(decoded, decoded_len); + if (decoded_len) { + out_avail = 1; + NEW_BUCKET(decoded, decoded_len); + } efree(decoded); } } @@ -480,11 +492,10 @@ static php_stream_filter *http_filter_create(const char *name, zval *params, int HTTP_FILTER_BUFFER(deflate) *b = NULL; if (params) { - switch (Z_TYPE_P(params)) - { + switch (Z_TYPE_P(params)) { case IS_ARRAY: case IS_OBJECT: - if (SUCCESS != zend_hash_find(HASH_OF(params), "flags", sizeof("flags"), (void **) &tmp)) { + if (SUCCESS != zend_hash_find(HASH_OF(params), "flags", sizeof("flags"), (void *) &tmp)) { break; } default: