Skip to content

Commit 1ec58d4

Browse files
committed
ext/sopa: call_user_function API doesn't care about the function table
1 parent a402eda commit 1ec58d4

File tree

1 file changed

+6
-14
lines changed

1 file changed

+6
-14
lines changed

ext/soap/soap.c

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1542,11 +1542,7 @@ PHP_METHOD(SoapServer, handle)
15421542
if (zend_hash_find_ptr_lc(function_table, Z_STR(h->function_name)) != NULL ||
15431543
((service->type == SOAP_CLASS || service->type == SOAP_OBJECT) &&
15441544
zend_hash_str_exists(function_table, ZEND_CALL_FUNC_NAME, sizeof(ZEND_CALL_FUNC_NAME)-1))) {
1545-
if (service->type == SOAP_CLASS || service->type == SOAP_OBJECT) {
1546-
call_status = call_user_function(NULL, soap_obj, &h->function_name, &h->retval, h->num_params, h->parameters);
1547-
} else {
1548-
call_status = call_user_function(EG(function_table), NULL, &h->function_name, &h->retval, h->num_params, h->parameters);
1549-
}
1545+
call_status = call_user_function(NULL, soap_obj, &h->function_name, &h->retval, h->num_params, h->parameters);
15501546
if (call_status != SUCCESS) {
15511547
php_error_docref(NULL, E_WARNING, "Function '%s' call failed", Z_STRVAL(h->function_name));
15521548
return;
@@ -1572,16 +1568,12 @@ PHP_METHOD(SoapServer, handle)
15721568
if (zend_hash_find_ptr_lc(function_table, Z_STR(function_name)) != NULL ||
15731569
((service->type == SOAP_CLASS || service->type == SOAP_OBJECT) &&
15741570
zend_hash_str_exists(function_table, ZEND_CALL_FUNC_NAME, sizeof(ZEND_CALL_FUNC_NAME)-1))) {
1575-
if (service->type == SOAP_CLASS || service->type == SOAP_OBJECT) {
1576-
call_status = call_user_function(NULL, soap_obj, &function_name, &retval, num_params, params);
1577-
if (service->type == SOAP_CLASS) {
1578-
if (service->soap_class.persistence != SOAP_PERSISTENCE_SESSION) {
1579-
zval_ptr_dtor(soap_obj);
1580-
soap_obj = NULL;
1581-
}
1571+
call_status = call_user_function(NULL, soap_obj, &function_name, &retval, num_params, params);
1572+
if (service->type == SOAP_CLASS) {
1573+
if (service->soap_class.persistence != SOAP_PERSISTENCE_SESSION) {
1574+
zval_ptr_dtor(soap_obj);
1575+
soap_obj = NULL;
15821576
}
1583-
} else {
1584-
call_status = call_user_function(EG(function_table), NULL, &function_name, &retval, num_params, params);
15851577
}
15861578
} else {
15871579
php_error(E_ERROR, "Function '%s' doesn't exist", Z_STRVAL(function_name));

0 commit comments

Comments
 (0)