Skip to content

Commit a2ce3c7

Browse files
author
Sascha Schumann
committed
Allow errors to be returned as XMLRPC fault packets.
Submitted by: Matt Allen <matt@investigationmarketplace.com>
1 parent 043ec51 commit a2ce3c7

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

NEWS

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
PHP 4.0 NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
33
?? ??? 200?, Version 4.0.7-dev
4-
- Improve range() function to support range('a','z') and range(9,0) types
4+
- Added option for returning XMLRPC fault packets (Matt Allen, Sascha Schumann)
5+
- Improved range() function to support range('a','z') and range(9,0) types
56
of ranges. (Rasmus)
67
- Add getmygid() and safe_mode_gid ini directive to allow safe mode to do
78
a gid check instead of a uid check. (James E. Flemer, Rasmus)

main/main.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@ PHP_INI_BEGIN()
202202
STD_PHP_INI_BOOLEAN("enable_dl", "1", PHP_INI_SYSTEM, OnUpdateBool, enable_dl, php_core_globals, core_globals)
203203
STD_PHP_INI_BOOLEAN("expose_php", "1", PHP_INI_SYSTEM, OnUpdateBool, expose_php, php_core_globals, core_globals)
204204
STD_PHP_INI_BOOLEAN("html_errors", "1", PHP_INI_SYSTEM, OnUpdateBool, html_errors, php_core_globals, core_globals)
205+
STD_PHP_INI_BOOLEAN("xmlrpc_errors", "0", PHP_INI_SYSTEM, OnUpdateBool, xmlrpc_errors, php_core_globals, core_globals)
206+
STD_PHP_INI_ENTRY("xmlrpc_error_number", "0", PHP_INI_ALL, OnUpdateString, xmlrpc_error_number, php_core_globals, core_globals)
205207
STD_PHP_INI_BOOLEAN("ignore_user_abort", "0", PHP_INI_ALL, OnUpdateBool, ignore_user_abort, php_core_globals, core_globals)
206208
STD_PHP_INI_BOOLEAN("implicit_flush", "0", PHP_INI_PERDIR|PHP_INI_SYSTEM,OnUpdateBool, implicit_flush, php_core_globals, core_globals)
207209
STD_PHP_INI_BOOLEAN("log_errors", "0", PHP_INI_ALL, OnUpdateBool, log_errors, php_core_globals, core_globals)
@@ -400,12 +402,20 @@ static void php_error_cb(int type, const char *error_filename, const uint error_
400402
error_format = PG(html_errors) ?
401403
"<br>\n<b>%s</b>: %s in <b>%s</b> on line <b>%d</b><br>\n"
402404
: "\n%s: %s in %s on line %d\n";
405+
if (PG(xmlrpc_errors)) {
406+
error_format = do_alloca(1024);
407+
snprintf(error_format, 1023 , "<?xml version=\"1.0\"?><methodResponse><fault><value><struct><member><name>faultCode</name><value><int>%d</int></value></member><member><name>faultString</name><value><string>%%s:%%s in %%s on line %%d</string></value></member></struct></value></fault></methodResponse>", PG(xmlrpc_error_number));
408+
}
403409

404410
if (prepend_string) {
405411
PUTS(prepend_string);
406412
}
407413
php_printf(error_format, error_type_str, buffer,
408414
error_filename, error_lineno);
415+
if (PG(xmlrpc_errors)) {
416+
free_alloca(error_format);
417+
}
418+
409419
if (append_string) {
410420
PUTS(append_string);
411421
}

main/php_globals.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@ struct _php_core_globals {
123123
zend_bool y2k_compliance;
124124

125125
zend_bool html_errors;
126+
zend_bool xmlrpc_errors;
127+
128+
short xmlrpc_error_number;
129+
126130

127131
zend_bool modules_activated;
128132

0 commit comments

Comments
 (0)