projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix bug with request_pool+libevent+add-requests-while-running
[m6w6/ext-http]
/
http_api.c
diff --git
a/http_api.c
b/http_api.c
index 4ab7d7edbd1862d4eb6b2ab41ef7eb0666907717..04247fa310d771ac16a9fc99e810671ff1f7db56 100644
(file)
--- a/
http_api.c
+++ b/
http_api.c
@@
-109,7
+109,7
@@
void _http_error_ex(long type TSRMLS_DC, long code, const char *format, ...)
va_start(args, format);
#ifdef ZEND_ENGINE_2
va_start(args, format);
#ifdef ZEND_ENGINE_2
- if ((type == E_THROW) || (
PG(error_handling)
== EH_THROW)) {
+ if ((type == E_THROW) || (
GLOBAL_ERROR_HANDLING
== EH_THROW)) {
char *message;
zend_class_entry *ce = http_exception_get_for_code(code);
char *message;
zend_class_entry *ce = http_exception_get_for_code(code);
@@
-117,7
+117,7
@@
void _http_error_ex(long type TSRMLS_DC, long code, const char *format, ...)
vspprintf(&message, 0, format, args);
zend_throw_exception(ce, message, code TSRMLS_CC);
efree(message);
vspprintf(&message, 0, format, args);
zend_throw_exception(ce, message, code TSRMLS_CC);
efree(message);
- } http_catch(
PG(exception_class) ? PG(exception_class)
: HTTP_EX_DEF_CE);
+ } http_catch(
GLOBAL_EXCEPTION_CLASS ? GLOBAL_EXCEPTION_CLASS
: HTTP_EX_DEF_CE);
} else
#endif
php_verror(NULL, "", type, format, args TSRMLS_CC);
} else
#endif
php_verror(NULL, "", type, format, args TSRMLS_CC);
@@
-357,6
+357,9
@@
PHP_HTTP_API STATUS _http_get_request_body_ex(char **body, size_t *length, zend_
memcpy(*body + *length, buf, len);
*length += len;
(*body)[*length] = '\0';
memcpy(*body + *length, buf, len);
*length += len;
(*body)[*length] = '\0';
+ if (len < (int) sizeof(buf)) {
+ break;
+ }
}
/* check for error */
}
/* check for error */
@@
-395,6
+398,9
@@
PHP_HTTP_API php_stream *_http_get_request_body_stream(TSRMLS_D)
while (0 < (len = sapi_module.read_post(buf, sizeof(buf) TSRMLS_CC))) {
php_stream_write(s, buf, len);
while (0 < (len = sapi_module.read_post(buf, sizeof(buf) TSRMLS_CC))) {
php_stream_write(s, buf, len);
+ if (len < (int) sizeof(buf)) {
+ break;
+ }
}
if (len < 0) {
}
if (len < 0) {
@@
-549,15
+555,6
@@
PHP_HTTP_API STATUS _http_parse_params_ex(const char *param, int flags, http_par
goto failure;
break;
goto failure;
break;
- case '=':
- if (key) {
- keylen = c - key;
- st = ST_VALUE;
- } else {
- goto failure;
- }
- break;
-
case ' ':
if (key) {
keylen = c - key;
case ' ':
if (key) {
keylen = c - key;
@@
-574,7
+571,32
@@
PHP_HTTP_API STATUS _http_parse_params_ex(const char *param, int flags, http_par
}
break;
}
break;
+ case ':':
+ if (!(flags & HTTP_PARAMS_COLON_SEPARATOR)) {
+ goto not_separator;
+ }
+ if (key) {
+ keylen = c - key;
+ st = ST_VALUE;
+ } else {
+ goto failure;
+ }
+ break;
+
+ case '=':
+ if (flags & HTTP_PARAMS_COLON_SEPARATOR) {
+ goto not_separator;
+ }
+ if (key) {
+ keylen = c - key;
+ st = ST_VALUE;
+ } else {
+ goto failure;
+ }
+ break;
+
default:
default:
+ not_separator:
if (!key) {
key = c;
}
if (!key) {
key = c;
}
@@
-646,7
+668,7
@@
failure:
/* }}} */
/* {{{ array_join */
/* }}} */
/* {{{ array_join */
-int apply_array_append_func(void *pDest, int num_args, va_list args, zend_hash_key *hash_key)
+int apply_array_append_func(void *pDest
HTTP_ZAPI_HASH_TSRMLS_DC
, int num_args, va_list args, zend_hash_key *hash_key)
{
int flags;
char *key = NULL;
{
int flags;
char *key = NULL;
@@
-666,10
+688,7
@@
int apply_array_append_func(void *pDest, int num_args, va_list args, zend_hash_k
ZVAL_ADDREF(*value);
if (data) {
ZVAL_ADDREF(*value);
if (data) {
- if (Z_TYPE_PP(data) != IS_ARRAY) {
- convert_to_array(*data);
- }
- add_next_index_zval(*data, *value);
+ add_next_index_zval(http_zset(IS_ARRAY, *data), *value);
} else if (key) {
zend_hash_add(dst, key, hash_key->nKeyLength, value, sizeof(zval *), NULL);
} else {
} else if (key) {
zend_hash_add(dst, key, hash_key->nKeyLength, value, sizeof(zval *), NULL);
} else {
@@
-684,7
+703,7
@@
int apply_array_append_func(void *pDest, int num_args, va_list args, zend_hash_k
return ZEND_HASH_APPLY_KEEP;
}
return ZEND_HASH_APPLY_KEEP;
}
-int apply_array_merge_func(void *pDest, int num_args, va_list args, zend_hash_key *hash_key)
+int apply_array_merge_func(void *pDest
HTTP_ZAPI_HASH_TSRMLS_DC
, int num_args, va_list args, zend_hash_key *hash_key)
{
int flags;
char *key = NULL;
{
int flags;
char *key = NULL;