summaryrefslogtreecommitdiff
path: root/main/streams/transports.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/streams/transports.c')
-rw-r--r--main/streams/transports.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/main/streams/transports.c b/main/streams/transports.c
index eb1909f1ce..40d45dbd6f 100644
--- a/main/streams/transports.c
+++ b/main/streams/transports.c
@@ -31,7 +31,12 @@ PHPAPI HashTable *php_stream_xport_get_hash(void)
PHPAPI int php_stream_xport_register(const char *protocol, php_stream_transport_factory factory)
{
- return zend_hash_str_update_ptr(&xport_hash, protocol, strlen(protocol), factory) ? SUCCESS : FAILURE;
+ int ret;
+ zend_string *str = zend_string_init_interned(protocol, strlen(protocol), 1);
+
+ ret = zend_hash_update_ptr(&xport_hash, str, factory) ? SUCCESS : FAILURE;
+ zend_string_release(str);
+ return ret;
}
PHPAPI int php_stream_xport_unregister(const char *protocol)
@@ -107,8 +112,7 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in
}
if (protocol) {
- char *tmp = estrndup(protocol, n);
- if (NULL == (factory = zend_hash_str_find_ptr(&xport_hash, tmp, n))) {
+ if (NULL == (factory = zend_hash_str_find_ptr(&xport_hash, protocol, n))) {
char wrapper_name[32];
if (n >= sizeof(wrapper_name))
@@ -118,10 +122,8 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in
ERR_REPORT(error_string, "Unable to find the socket transport \"%s\" - did you forget to enable it when you configured PHP?",
wrapper_name);
- efree(tmp);
return NULL;
}
- efree(tmp);
}
if (factory == NULL) {
@@ -162,13 +164,7 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in
int backlog = 32;
if (PHP_STREAM_CONTEXT(stream) && (zbacklog = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "socket", "backlog")) != NULL) {
- zval *ztmp = zbacklog;
-
- convert_to_long_ex(ztmp);
- backlog = Z_LVAL_P(ztmp);
- if (ztmp != zbacklog) {
- zval_ptr_dtor(ztmp);
- }
+ backlog = zval_get_long(zbacklog);
}
if (0 != php_stream_xport_listen(stream, backlog, &error_text)) {