ID: 36388
User updated by: david at jool dot nl
-Summary: PHP crash when throwing exception and session
persistence
Reported By: david at jool dot nl
Status: Assigned
Bug Type: SOAP related
Operating System: winxp
PHP Version: 5CVS-2006-02-14 (snap)
Assigned To: dmitry
New Comment:
Possible patch
--- F:\dev\php 5.1.2\php-src\ext\soap\soap.c Sun Jan 01 13:50:14 2006
+++ f:\dev\php-modified\ext\soap\soap.c Wed Mar 01 15:04:19 2006
@@ -1712,7 +1712,7 @@
instanceof_function(Z_OBJCE_P(EG(exception)),
soap_fault_class_entry TSRMLS_CC)) {
soap_server_fault_ex(function, EG(exception), NULL
TSRMLS_CC);
} else {
- if (soap_obj) {zval_ptr_dtor(&soap_obj);}
+ if (soap_obj && service->soap_class.persistance !=
SOAP_PERSISTENCE_SESSION) {zval_ptr_dtor(&soap_obj);}
php_end_ob_buffer(0, 0 TSRMLS_CC);
goto fail;
}
Previous Comments:
------------------------------------------------------------------------
[2006-02-14 11:15:27] david at jool dot nl
Description:
------------
When using the soap extension to expose a certain class and setting the
persistence to SOAP_PERSISTENCE_SESSION, PHP crashes when I throw an
Exception.
Reproduce code:
---------------
<?php
class test1 {
function soapFunction($param) {
throw new Exception("something went wrong");
return "blaat aap: ". $param;
}
}
if($_GET["type"]=="server") {
$server = new SOAPServer(null, array("uri"=>
"http://some.example.uri/"));
$server->setClass("test1");
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
} else { //client
$client = new SOAPClient(null, array('location' =>
'http://'.$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"].'?type=server',
'uri'=> 'http://some.example.uri/'));
$res = $client->__call("soapFunction", array("hey!"));
var_dump($res);
}
?>
Expected result:
----------------
Fatal error: Uncaught SoapFault exception: [Client] looks like we got
no XML document in f:\myweb\contentarea\tests\bug_exception.php:15
Stack trace: #0 f:\myweb\contentarea\tests\bug_exception.php(15):
SoapClient->__call('soapFunction', Array) #1 {main} thrown in
f:\myweb\contentarea\tests\bug_exception.php on line 15
Actual result:
--------------
PHP / Apache crash
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=36388&edit=1