From: gggeek Date: Mon, 8 Dec 2014 00:33:50 +0000 (+0000) Subject: Convert docs files to unix newlines X-Git-Tag: 4.0.0-alpha~1 X-Git-Url: http://git.onelab.eu/?p=plcapi.git;a=commitdiff_plain;h=31d3cedaafa355e5682d55a3d7178b53aedfbaa0 Convert docs files to unix newlines --- diff --git a/ChangeLog b/ChangeLog index cd95a9f..d91166c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,1610 +1,1610 @@ -NB: All recent commits are available online. -This file will not be updated further. -See https://github.com/gggeek/phpxmlrpc/commits/master - - -2014-02-3 - G. Giunta (giunta.gaetano@gmail.com) - - * bumped up requirements to php 5.1.0 - -2014-01-10 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: when using curl and keepalive, reset curl handle if we did not get back an http 200 response (eg a 302) - - * testsuite.php, parse_args.php: update testsuite - - * debugger/controller.php: change default path to javascript debugger - -2010-05-23 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: omit port on http 'Host' header if it is 80; - add a namespace declaration in response if ex:nil is in use - -2010-04-12 - G. Giunta (giunta.gaetano@gmail.com) - - * testsuite.php, parse_args.php: testsuite allows interrogating https servers ignoring their certs - - * xmlrpc.inc: method setAcceptedCompression was failing to disable reception - of compressed responses if the client supported them (triggering a bug with - https and php < 5.3 on windows); remove a php warning that could be - generated when using debug=2 in a client connecting to an https - server - -2010-04-11 - G. Giunta (giunta.gaetano@gmail.com) thanks amoe - - * fixed: bad variables in "make install" make target - -2009-11-11 - G. Giunta (giunta.gaetano@gmail.com) thanks Ikiro Watanabe - - * added INSTALL file - -2009-09-05 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpcs.inc, xmlrpcs.inc: remove code that was left for compatibility - with php 4; use __METHOD__ constant for error messages instead of hardcoded - values - - * xmlrpcs.inc: catch exceptions thrown during execution of invoked methods; - check for $_SERVER having been disabled via php.ini and log an error if so - - * server.php, testsuite.php: add a new test and server method for exception - catching in the server - - * xmlrpc.inc: added new method SetUserAgent to client to allow having different - user-agent http headers - - * tagged and released as 3.0.0 beta - -2009-08-05 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc_wrappers.inc: improve compatibility with php 5.0 when registering - class/object methods - -2009-08-02 - G. Giunta (giunta.gaetano@gmail.com) thanks Laurens - - * xmlrpcs.inc: add a new member var in server class to allow fine-tuning - of the encoding of returned values when the server is in 'phpvals' mode; - allow servers in 'xmlrpcvals' mode to also register plain php functions by - defining them in the dispatch map with an added option: - 'parameters_type' => 'phpvals' (feature request #2806628) - - * xmlrpc.inc: added new method xmrlpc_client::SetCurlOptions($array) to - allow extra flexibility in tweaking http config, such as explicitly - binding to an ip address (feature request #2787468); fix bad encoding if - same object is encoded twice using php_xmlrpc_encode; removed some by-ref - assignments and declarations - -2009-07-31 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: add support for dateTime objects in both in php_xmlrpc_encode - and as parameter for constructor of xmlrpcvals; add support for timestamps - as parameter for constructor of xmlrpcvals; add option 'dates_as_objects' to - php_xmlrpc_decode to return dateTime objects for xmlrpc datetimes - - * benchmark.php, xmlrpc_wrappers.inc: remove usage of split(), deprecated in - php 5.3 - - * benchmark.php: fixed url of server page used for testing; improved - verification of correspondence of test results; added more variants for - http options comparison - - * verify_compat.php: check for php version 5 for client side too - - * makefile: remove from build the compat directory - -2009-07-26 - G. Giunta (giunta.gaetano@gmail.com) - - * server.php: remove usage of ereg*(), deprecated in php 5.3 - -2009-07-16 - G. Giunta (giunta.gaetano@gmail.com) thanks Jean-Jacques Sarton - - * xmlrpc.inc: add support for the from the apache library, both - in input and output (feature request #...) - - * xmlrpc.inc, testsuite.php: remove usage of split(), deprecated in php 5.3 - - * testsuite.php: flush better results with output_buffering on - - * server: php: avoid one warning about static function calls - -2009-07-02 - G. Giunta (giunta.gaetano@gmail.com) thanks Heiko Stuebner - - * xmlrpc.inc: fix: when checking the parameters against the signatures xmlrpc - checks for "array" but PHP returns "Array" resulting in a not matches signature - -2009-05-07 - G. Giunta (giunta.gaetano@gmail.com) - - * replace all usage of '= & new' with '= new', as this is deprecated in php 5 - and has been shown to cause problems too - -2009-05-06 - G. Giunta (giunta.gaetano@gmail.com) - - * create php4 branch, rename trunk to 3.0.0beta - it will be the php5-only version - - * xmlrpc.inc: removed test for php version and inclusion of compat patches for really - really old versions of php 4 - -2009-03-16 - G. Giunta (giunta.gaetano@gmail.com) thanks Tommaso Trani - - * move from CVS to SVN on sf.net; file layout now is the same as in packaged lib - - * xmlrpc.inc: fix php warning when receiving 'false' in a bool value - - * Makefile, doc/Makefile: alter to follow new file layout - - * tagged and released as 2.2.2 - -2009-02-03 - G. Giunta (giunta.gaetano@gmail.com) - - * debugger/action.php: improve code robustness when parsing system.listmethods - and system.describemethods call - - * xmlrpc.inc: format floating point values using the correct decimal separator - even when php locale is set to one that uses comma (bug #2517579); - use feof() to test if socket connections are to be closed instead of the - number of bytes read (bug #2556209) - -2008-10-29 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpcs.inc: allow add_to_map server method to add docs for single params, too - -2008-09-20 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc_wrappers.inc: added the possibility to wrap for exposure as xmlrpc - methods plain php class methods, object methods and even whole classes - - * testsuite.php, server.php: added test cases for the new code - -2008-09-07 - G. Giunta (giunta.gaetano@gmail.com) thanks Bruno Zanetti Melotti - - * xmlrpc.inc: be more tolerant in detection of charset in http headers (fix for bug #2058158) - -2008-04-05 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: fix encoding of UTF8 chars outside of the BMP - - * xmlrpcs.inc: fix detection of zlib.output_compression (thanks xbert) - -2008-03-06 - G. Giunta (giunta.gaetano@gmail.com) - - * tagged and released as 2.2.1 - - * Makefile: improve usage on windows xp despite cmd's broken mkdir - -2007-10-26 - G. Giunta (giunta.gaetano@gmail.com) thanks sajo_raftman - - * xmlrpc.inc: remove one warning in xmlrpc_client creator - -2007-10-26 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: improve support for windows cp1252 character set (still - commented in the code) - -2007-09-05 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc, xmlrps.inc: do not try to set invalid charsets as output for - xml parser, even if user set them up for internal_encoding (helps encoding - to exotic charsets, while decoding to UTF8) - -2007-09-05 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: fix parsing of '1e+1' as valid float - -2007-09-01 - G. Giunta (giunta.gaetano@gmail.com), thanks Frederic Lecointre - - * xmlrpcs.inc: allow errorlevel 3 to work when prev. error handler was a static method - - * testsuite.php: fix test on setCookie() - -2007-08-31 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: minor fix in cookie parsing - -2007-07-31 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: Fix usage of client::setcookie() for multiple cookies in non-ssl mode - -2007-07-26 - G. Giunta (giunta.gaetano@gmail.com) thanks Mark Olive - - * xmlrpc.inc: Fix for bug # 1756274 (usage of cookies in ssl mode) - -2007-04-28 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: give more detailed curl information when DEBUG = 2; fix handling - of case where curl w. keepalive is used and one connection of many fails - - * testsuite improvements: add one testcase; give feedbcak while tests are - running - -2007-04-01 - G. Giunta (giunta.gaetano@gmail.com) - - * doc/makefile, doc/custom.fo.xsl: improve pdf rendering of php source code - - * makefile: recover version number from source instead of having it hardcoded - -2007-03-10 - G. Giunta (giunta.gaetano@gmail.com) - - * doc/makefile, doc/convert.php, doc/*.xsl: created customizations xslt to - produce a documentation more in line with the php manual, esp. with regards - to functions synopsis; added jellyfish book cover as local resource and a - screenshot of the debugger too; various updates to the manual source; added - a php script to highlight examples inside html docs - -2007-03-09 - G. Giunta (giunta.gaetano@gmail.com) - - * debugger/action.php: css tweak for IE - - * added phpunit license file in the phpunit directory - - * added link to license (on sf.net site) to many files - -2007-03-04 - G. Giunta (giunta.gaetano@gmail.com) - - * Makefile, doc/makefile: assorted improvements - -2007-03-03 - G. Giunta (giunta.gaetano@gmail.com) - - * xmlrpc.inc: micro-optimization in declaration of global vars xmlrpcerr, xmlrpcstr - -2007-02-25 Gaetano Giunta - - * removed a couple of warnings emitted in testsuite.php - - * doc/makefile: added command for invocation of xxe to generate docs - - * better rendering of docs in xml+css format for function prototypes - - * updated documentation - - * tagged and released as 2.2 - -2007-02-22 Gaetano Giunta - - * debugger: workaround for case of magic_quotes_gpc being set (properly - unescape user input); fix case of user not setting msg id in jsonrpc case - when executing a remote method; allow strings, false, true and null as msg id - -2007-02-13 Gaetano Giunta - - * testsuite.php: added one test for automatic encoding/decoding case - -2007-02-05 Gaetano Giunta - - * xmlrpc.inc: slightly faster encoding of UTF8 data to ascii - -2007-01-11 Gaetano Giunta - - * xmlrpc.inc: when calling client::multicall() with an unspecified http version, - use the client default rather than the fixed 'http 1.0' - -2006-09-17 Gaetano Giunta - - * xmlrpc.inc, xmlrpcs.inc, testsuite.php: added support for and - system.getCapabilities, and one more testcase to go with it - -2006-09-05 Gaetano Giunta - - * xmlrpc.inc: fix support for https through proxies; client parses debug - messages sent by client even for compressed responses; - - * testsuite.php, parse_args.php: added 3 test cases for proxy connections - -2006-09-01 Gaetano Giunta - - xmlrpc_wrappers.inc: add two more options in wrap_xmlrpc_method and fix - typo to allow obj encoding - -2006-08-28 Gaetano Giunta - - * xmlrpc_wrappers.inc: more options added to wrap_php_function and - wrap_xmlrpc_method - - * xmlrpc.inc: pave the way to support for - - * doc/xmlrpc_php.xml documentation updated - - * tagged and released as 2.1 - -2006-08-25 Gaetano Giunta - - * xmlrpc.inc: stricter parsing of incoming messages: detect two DATA elements - inside an ARRAY, a STRUCT or SCALAR inside an already filled VALUE - - * testsuite.php: added two testcases to check for the above cases - -2006-08-24 Gaetano Giunta - - * xmlrpc.inc: more code optimization in xmlrpcval::serialize() and - php_xmlrpc_encode(); fixed bug where struct elements with non-ascii chars - in their name would not be properly encoded - - * testsuite.php: added a testcase for the new bug - -2006-08-23 Gaetano Giunta - - * remove old code left in comments across many files; many more javadoc - comments added - - * xmlrpc.inc: a bit of code optimization: reorder switch() statements of - xml parsing element handlers; inline code for xmlrpcval() - this breaks - new xmlrpcval('true') and changes error msgs on new xmlrpcval($x, 'invalid_type') - - * testsuite.php: change according to above - - * benchmark.php: basic support for xdebug 2 profiling - -2006-08-22 Gaetano Giunta - - * xmlrpc.inc: addscalar() and addstruct() where not returning 1 when adding - data to an already formed value - -2006-08-21 Gaetano Giunta - - * xmlrpcs.inc, xmlrpc.inc: added support for emulating the xmlrpc-extension - API (the full emulation layer is part of the extras package); - fix support for the HTTP 'deflate' encoding - - * xmlrpc.inc: better support for http compression with and without CURL; - a minor decoding speedup; added a new function: php_xmlrpc_decode_xml(), - that will convert into the appropriate object the xml representation of - either a request, response or a single value; log reception of invalid - datetime values - - * xmlrpcs.inc: add a new parameter and return type to server->service(); - let server->add_to_map() accept method definitions without parameter types - - * xmlrpc_wrappers.inc: more logging of errors; wrap_php_functions now takes - more options; better support for jsonrpc; escape quote chars when wrapping - remothe servers / remote methods - - * added cvs Id tag to files that missed it; speling fixes; updated NEWS files - -2006-08-07 Gaetano Giunta - - * assorted fixes to make the suite more compatible with php 4.0.5 and 5.x - -2006-07-02 Gaetano Giunta - - * xmlrpc_warppers.inc: added new function to wrap entire remote server into - a local php class; changed default calling synopsis of wrap_remote_method, - to ease passing multiple options at a time (but old syntax still works!) - - * updated makefile, debugger/action.php in accord with the above - -2006-06-30 Gaetano Giunta - - * added to debugger capability to generate json-rpc code stubs - - * added to debugger capability to load and launch self correctly if - controller.php is called directly from outside processes (single url access) - -2006-06-26 Gaetano Giunta - - * moved wrap_php_functions and wrap_xmlrpc_method into a file of their own. - This will let us add further stub functionality without the base lib growing too much. - All of the files that reference this functionality have been modified accordingly. - - * made wrap_xmlrpc_method generate better code (with php type juggling), and - some phpdoc for the generated function, too - - * added to debugger an option to produce for the user the generated php code - for wrapping a call to a remote method into a php function - -2006-06-22 Gaetano Giunta - - * xmlrpcs.inc: added description of parameters for system.xxx methods (useful with - html-self-documenting servers); - server->service() now returns response object, in case user has need for it... - - * xmlrpc.inc: save full response payload into xmlrpcresp obj for better debugging - -2006-06-15 Gaetano Giunta - - * verify_compat.php: more tests - -2006-06-09 Gaetano Giunta - - * xmlrpcs.inc: fixed sending of compressed responses when output compression - is already enabled in php.ini - - * verify_compat.php: split tests between server and client cases - -2006-05-29 Gaetano Giunta - - * added new file: verify_compat.php, to help troubleshooting platform - support for the library; added it to makefile, too - -2006-05-24 Gaetano Giunta - - * xmlrpc.inc: removed residual usage of regexp in favour of pregexps; fixed - a bug in specifying Host http header with non std ports - -2006-05-23 Gaetano Giunta - - * xmlrpc.inc: improvements to wrap_php_function: let it deal correctly - with php functions returning xmlrpcresp objs; make it generate also - docs for single parameters (useful for documenting_xmlrpc_server class) - -2006-05-22 Gaetano Giunta - - * xmlrpc.inc, xmlrpcs.inc: minor performance tuning updates: replaced - some explode vs. split, ereg vs. preg, single vs. double quotes - - * xmlrpc.inc: fix wrap_xmlrpc_method to NOT rebuild php objects received - from the server by default, as it might pose a security risk - -2006-04-24 Gaetano Giunta - - * minor fixes makefiles. Tagged and released as 2.0 final - -2006-04-22 Gaetano Giunta - - * debugger/*: added option to set cainfo; improve web layout - - * xmlrpc.inc: set sslverifypeer to TRUE instaed of 1 by default - - * doc/php_xmlrpc.xml: documentation updates - -2006-04-21 Gaetano Giunta - - * xmlrpc.inc: added option to set ca certs dir instead of single cert - (used to validate server in https connetions) - -2006-04-18 Gaetano Giunta - - * xmlrpc.inc: fixed bug in xmlrpcval::structmemexists() - - * testsuite.php: added test case for xmlrpcval::structmemexists() - -2006-04-03 Gaetano Giunta - - * xmlrpc.inc: add support for Digest and NTLM authentication, both to server - and to proxies (note: must use CURL for this to work) - - * debugger/*: add support for Digest/NTLM auth to remote servers - -2006-03-19 Gaetano Giunta - - * xmlrpc.inc: fix a bug parsing of 'true' bool values; - added a new method to the client class: SetCaCertificate; - add column number in xml parsing error messages; - fix serialization of messages to ISO-8859-1 charset with php 5 (by adding - encoding to the xml prologue of generated messages) - - * xmlrpcs.inc: correct detection of charset in http headers; - add column number in xml parsing error messages; - fix serialization of responses to ISO-8859-1 charset with php 5 (by adding - encoding to the xml prologue of generated responses) - - * testsuite.php: added two more tests on charset encoding - - * NEWS: update info for impending release - -2006-03-23 Gaetano Giunta - - * added a new demo file: simple_call.php - -2006-02-20 Gaetano Giunta - - * xmlrpcs.inc: more error checking and logging with regard to user-coded - method handler functions not being well behaved; - fix a case where error handler would not be reset upon user function - returning not valid xmlrpresp - - * xmlrpc.inc: fix bug in detection of php 4.3.0 - - * Makefile: fix uppercase filenames - -2006-02-15 - - * xmlrpc.inc: parse 'true' and 'false' as valid booleans, even though the - spec is quite clear on that; fix small bug w. internal_encoding = utf8; add - definition of $GLOBALS['xmlrpcNull'] for extensibility, e.g. json or - extensions to the xmlrpc spec - -2006-02-05 Gaetano Giunta - - * xmlrpc.inc: fix bug in wrap_xmlrpc_method if client passed to function has - return_type=phpvals - - * all demo files: review code, add more comments and information - - * added 2 demo files: proxy.php (implementing an xmlrpc proxy server) and - wrap.php (showing usage of wrap_method_call) - -2006-02-04 Gaetano Giunta - - * xmlrpc.inc: fix bug in multicall in case of no fallback and server error - -2006-01-30 Gaetano Giunta - - * xmlrpc.inc: fix recursive serialization of xmlrpcvals loosing UTF8 charset; - correctly set type field of xmlrpcvals returned by send() calls - - * xmlrpcs.inc: add to server checks for correct return type of user-coded - method handling function; tolerate xmlrpcval instead of xmlrpcresp - - * minor change in xmlrpcresp internals, to ease subclassing (store payload - in an internal var on serialize(), same as xmlrpcclient does) - -2006-01-22 Gaetano Giunta - - * benchmark.php: do not run http 1.1 tests if CURL notfound - - * Released as 2.0 Rc3 - -2006-01-19 Gaetano Giunta - - * xmlrpc.inc: make xmlrpc_client::setDebug() accept int values instead of - boolean. At level 2, the request payload is printed to screen before being - sent; fix bug with repeated sending of the same msg object and using request - compression w. php 5.1.2 (objects passed by ref by default!!!) - - * xmlrpcs.inc: fix detection of clients accepting compressed responses - - * comment.php: remove warnings due to liberal usage of $HTTP_POST/GET_VARS - - * benchmark.php: add a test using http compression of both requests and - responses - - * testsuite.php: added test for fix in xmlrpc.inc - -2006-01-17 Gaetano Giunta - - * xmlrpcs.php: minor fix: do not raise a PHP warning when std server is - called via GET (global HTTP_RAW_POST_DATA undefined). Some might have called - it a security breach (path disclosure)... - -2006-01-15 Gaetano Giunta - - * testsuite.php: minor fix to expected date format in http cookie hedaer - to cope with PHP 5.1.2 - -2006-01-05 Gaetano Giunta - - * xmlrpcs.inc: merge code from the 'extras' subclass that allows server - to register plain php functions in dispatch map instead of functions - accepting a single xmlrpcmgs obj parameter. - One step closer to the kitchen sink!!! - -2005-12-31 Gaetano Giunta - - * xmlrpcs.inc: let the server accept 'class::method' syntax in the dispatch - map - - * testsuite.php, server.php: added new tests for the recent charset encoding - capabilities - -2005-12-24 Gaetano Giunta - - * xmlrpc.inc: correctly serialize() string xmlrpcvals that have been - created out of non-string php variables, when internal encoding is UTF8; - serialize to '0' int and double values created out of non-string php - variables, eg. 'hello', instead of creating invalid xmlrpc; - extend the php_xmlrpc_encode function to allow serializing string values - to charsets other tha US-ASCII; - minor tweak to xml parsing to allow correct parsing of empty strings when - in 'direct to php values' mode - - * xmlrpcs.inc: advances in system.multicall with plain php values - -2005-12-17 Gaetano Giunta - - * xmlrpcs.inc: let the functions implementing the system.* methods work - fine when called with plain php values as parameters instead of xmlrpcmsg - objects (multicall not quite finished yet...); - encode level 3 debug info as base64 data, to avoid charset encoding hell - - * xmlrpc.inc: added a new xmlrpc_2_php_type function, to get the name of - php types corresponding to xmlrpc types; - in debug mode, when detecting base64 server debug info, print it out fine - - * server.php: cosmetic fixes - -2005-12-09 Gaetano Giunta - - * xmlrpc.inc: remove one warning emitted when received xml contains an - unknown tag; remove warnings emitted when custom error handler is set - and user calls php_xmlrpc_encode/decode without the 2nd parameter - - * xmlrpcs.inc: added a param to service(), to allow the server to parse - data other than the POST body (useful for subclassing and debugging); - reworked the implementation of server debug messages at debug level 2: - since the debug info generated has no known charset, and putting it back - into the response's xml would most likely break it, send it back to the - client as a base64 encoded comment. Clients can decode it if they need it... - Add some more javadocs - - * testsuite.php: modified the string test, to see if the server can echo - back to the client the received data without breaking the response's xml - -2005-12-05 Gaetano Giunta - - * xmlrpc.inc, xmlrpcs.inc: let server and client objects decide if they - want to use some charset encoding other than US-ASCII for serialized data: - add a new var to both objects, and lots of parameters to function calls - that took none up to now; - refactored server method service() and parseRequest(), implementing a - new parserequestHeaders() method to explicitly deal with HTTP - -2005-12-01 Gaetano Giunta - - * moved the jsonrpc implementation and the new wsdl stuff to a separate - CVS module; updated the makefile to reflect it - -2005-11-24 Gaetano Giunta - - * modified php_xmlrpc_decode() to work on xmlrpcmessages too, besides - xmlrpcvals. To achieve this, added a new method: xmlrpcmsg::kindOf() - -2005-11-22 Gaetano Giunta - - * released as 2.0 RC2 - -2005-11-21 Gaetano Giunta - - * xmlrpc.inc: fix warnings about references for PHP 4.1.X - - * Whitespace cleanup on all the lib - -2005-11-16 Gaetano Giunta - - * xmlrpc.inc: rewritten xmlrpc_encode_entitites adding two extra parameters - that specify input and output charset encodings. This corrects the bug that - prevented native UTF-8 strings to be correctly serialized (to have them - encoded the user must set $xmlrpc_internalencoing appropriately). - - * xmlrpc.inc: added new method xmlrpcmsg::parseResponseHeaders(), refactoring - parseResponse(). This makes the code more modular and eases subclassing. - - * xmlrpc.inc: set cookies and http headers to xmlrpcresp objs even when calls - to send() do not complete correctly - - * added new file: jsonrpcs.inc, to accomodate server jsonrpc objects in the future - - * jsonrpc.inc: slow progress... - -2005-11-10 Gaetano Giunta - - * xmlrpc.inc: fixed the xmlrpc_client send and sendpayloadhttps methods - to fix errors in calling https servers; - added a new xmlrpc_client->setkey method to allow usage of client-side ssl - certs in recent php builds; - added to xmlrpcresp objects a content_type var, to be used in HTTP headers - - * xmlrpcs.inc: separate generation of content-type http header and xml prologue - from the service() method, to ease subclassing - -2005-11-03 Gaetano Giunta - - * xmlrpc.inc: moved the 'text/xml' mimetype string as class var of the xmlrpcmsg - object instead of having it cabled into xmlrpc_client->send(): this allows to - create subclasses of xmlrpcmsg that use a different mimetype - - * jsonrpc.inc: added a new file, with an extremely experimental set of classes, - designed to implement a json-rpc client and server, taking advantage of the - existing xml-rpc infrastructure - -2005-10-28 Gaetano Giunta - - * xmlrpc.inc: changed constructor method for xmlrpcresp, making it smarter in - case user does not declare the type of value it is passing to it; - minor changes in serialization of xmlrpcresp with error codes, so that it - utputs LF instead of CRLF on windows boxes after an FTP transfer of the code, too - -2005-10-26 Gaetano Giunta - - * xmlrpc.inc: added a new var of class xmlrpc_client, indicating what kind of - object will be stored in the value() of xmlrpcresp's gotten from the send() - method: xmlrpxc objects, plain php variables or raw xml. This allow the coder - to make use of xmlrpc_decode for better performances if he wishes so. - Modified creator of xmlrpcresp class to allow it to distinguish between being - created out of raw xml or a plain php string (in the former case, serialization - is still possible, opening a new world of opportunity for server-side programming: - the php function implementing a web service has to provide the xml for the - return value on its own). - Modified xmlrpc_client::multicall() to suit; also added a new parameter which - allows calls to multicall without automatic fallback to many-calls in case of - error (speeding up the process of doing a failed multicall() call quite a bit) - Fixed two bugs in guess_encoding. - Audited all regexps and fixed some. - xmlrpc_client::send() does not call xmlrpcmsg::parseresponsefile() anymore. - Shuffled parseresponse() a little bit - - * testsuite.php: added a new testcase for the modifications to multicall(): - now we test the case where xmlrpc_client returns php values, too - -2005-10-24 Gaetano Giunta - - * xmlrpc.inc: fixed guess_encoding() to always return uppercase chars - - * added new file: benchmark.php. It contains a few tests used to evaluate - speed of the lib in common use cases - - * added file parse_args.php, containing common code for benchmark and - testsuite, and modified testsuite.php accordingly - - * modified makefile adding new files - - * testsuite.php: added a couple of new test cases; fixed one warning - emitted in php 5 E_STRICT mode - -2005-10-20 Gaetano Giunta - - * xmlrpc.inc: modify 3d param of ParseResponse(), allowing the function to - return the raw xml received as value of the xmlrpcresponse object. - This allows eg. to have epi-xmlrpc decode the xml for faster execution. - -2005-10-09 Gaetano Giunta - - * xmlrpc.inc: fixed error that prevented usage of HTTPS (the client - always determined that ssl support was not present) - -2005-10-03 Gaetano Giunta - - * xmlrpc.inc, xmlrpcs.inc: revert direction of stack growth during xml - parsing for faster execution time; add support for detecting charset - encoding of received xml; add support for cookies; better parsing of - javadoc when building stub code in wrap_php_function; add a lot of - javadoc comments everywhere; rewrite most error messages - - * testsuite.php: add many tests for newly introduced features - - * server.php: add a couple of new functions to support debugging new - features - - * debugger: add switches to enable all the latest lib features; minor - improvements to layout - - * synch included phpunit with latest PEAR release - - * reorganize files included in the distribution in a new hierarchy of folders - - * bump revision number to 2.0RC1 and release - -2005-8-14 Miles Lott - - * xmlrpc.inc, xmlrpcs.inc: Remove all use of eval() to avoid potential - security hole. - - * As of this release we are no longer php3-compatible. - -2005-8-10 Miles Lott - - * xmlrpc.inc, xmlrpcs.inc: Switched to using $GLOBALS instead of calling - global $varname - -2005-07-22 Miles Lott - - * Removed: bug_* files - -2005-07-14 Gaetano Giunta - - * debugger: added a workaround to disable using the debugger for attacking - older versions of the lib - - * testsuite.php: added code to test wrap_xmlrpc_method; - use different wording for failed tests - - * xmlrpcs.inc: change for() with foreach() in system.* methods implementations; - remove a possible cause of php warning; - - * xmlrpc.inc: let wrap_php_function and wrap_xmlrpc_method find suitable - function names if default function names are already in use; - correct wrap_xmlrpc_method to not set http protocol to 1.0 when not asked to; - detect curl compiles without SSL - -2005-07-14 Gaetano Giunta - - * xmlrpc.inc: more auto-fix of xmlrpc_client path: '' -> '/'; - change to the method used for detecting failed evals (php 4.0.x compatibility); - complete rework of return-by-ref functions to comply with php 4.4.0 - - * xmlrpcs.inc: change to the method used for detecting failed evals (php 4.0.x - compatibility) - - * testsuite.php: major rewrite of the multi- tests, to give better feedback on - number of failed tests; - flush html page title to screen before starting tests; - -2005-07-13 Gaetano Giunta - - * xmlrpc.inc: let xmlrpcmsg creator be forgiving of target paths that miss the - starting '/' char; - completely reworked assign-by-ref to be compliant with php 4.4.0 stricter - warnings - - * testsuite.php: added ability to be run from cli: (really dumb) separation of - html and plain text outputs + parsing of argv parameters - -2005-07-12 Gaetano Giunta - - * xmlrpc.inc: compatibility fixes with PHP versions 4.0.x (and remove some for - PHP 3) - - * xmlrpcs.inc: compatibility fixes for PHP 4.0.x versions - - * testsuite.php: better support for running with php versions 4.0.x; - do not generate runtime errors but finish tests anyway if some calls to - localhost fail; - correctly detect a localhost port different from 80 for running tests against - -2005-07-11 Gaetano Giunta - - * xmlrpc.inc: preliminary building of method signature and docs in - wrap_php_function; - fix a bug in extracting function description from javadoc block in - wrap_php_function; - small fix for better compatibility with php < 4.2.0 - - * added compat subdir with extra code, taken form PEAR package Compat, to let - the lib run fine with php 4 versions < 4.1 - -2005-07-10 Gaetano Giunta - - * xmlrpc.inc: some nazi whitespace corrections; - declared global $xmlrpcBoolean too (was the only one missing); - used @eval inside getval() to have less path disclosure security reports filed - in the future; - added new global var: $xmlrpcValue, to be used in server dispatch maps as - placeholder for a param which can be of any kind; - big chunks (but still incomplete) of javadoc parsing in wrap_php_function - + changed type of return val - now it is the complete array to be put in the - dispatch map - - * xmlrpcs.inc: let previous error handler be called by server to handle errors - even if in debug level 3; - default to compress responses if zlib installed; - added a new val useful for only checking number (not type) of params in method - calls; - let user use object methods in dispatch map using the - array($obj, 'fmethodname') format - - * server.php: Added code called by testsuite.php to exercise registration of - object methods as xmlrpc methods and auto-registration of php functions as xmlrpc - methods - - * testsuite.php: added tests to exercice server registering object methods as - xmlrpc methods and automatic registration of php functions as server methods; - added a hint to enable debug if some test goes wrong; - renamed https test for better clarity - -2005-07-07 Gaetano Giunta - - * xmlrpc.inc: added function to be used for 'guestimating' charset encoding of - received xml (not activated yet) - - * server.php: Let server compress content by default if user asks so: it allows - testsuite to check for compressed responses - - * testsuite.php: added suite of tests for compressed responses; test CURL - (http1.1) with all possible compression combinations too - -2005-07-06 Gaetano Giunta - - * xmlrpc.inc: Enable setting usage of keepalives on/off (for CURL cases); - implement compression of xmlrpc requests; enable new syntax of xmlrpclient - constructor: 1 - allow preferred http method to be set at creation time, - 2 - allow user to insert a single complete URL as only parameter and parse it; - try to detect if curl is present whether it has been compiled w. zlib to enable - automatically the reception of compressed responses - - * xmlrpcs.inc: do not add into logs the content of the request, if it was - received gzipped/deflated, to avoid breaking the xml sent back as response - (NB: might be investigated further: is the problem caused by windows chars in - the range 128-160 ?) - - * testsuite.php: run all localhost tests 2 more times, to stress request - compression; - run all localhost tests in a row using keepalives, to test keepalive - functionality - -2005-07-05 Gaetano Giunta - - * xmlrpc.inc: let CURL pass back to caller function the complete PHP headers - as it did before: it enables better logging / debugging of communication; - small change to the way CURL declares its ability to receive compressed - messages (fix for the case where zlib is compiled in PHP but not in curl); - added Keep-alive (ON BY DEFAULT) for http 1.1 and https messages (had to modify - a lot of functions for that); - always make sure a 'Connection: close' header is sent with curl connections if - keep-alive is not wanted - - * phpunit.php: switched to PEAR PHPUnit (rel 1.2.3), since it is maintained a - lot more than the old version we were using - - * added new folder with code of phpunit classes - - * testsuite.php: added a new run of tests to check for compliance of client - when using http 1.1; - switched to PEAR PHPUnit classes; - divided test for client ability to do multicall() into 2 separate tests - -2005-06-30 Gaetano Giunta - - tagged and released version 1.1.1, backporting security fixes from HEAD - -2005-06-28 Gaetano Giunta - - * xmlrpcs.inc: fix changes introuced yesterday in a rush; - do not list system.* methods for a server that has them explicitly disabled - - * bug_inject.xml: new test case used to check for code injection vulnerability - - * testsuite.php: added a test case for zero parameters method calls; - added two test cases for recently found code injection vulnerabilities - -2005-06-27 Gaetano Giunta - - * xmlrpc.inc: (tentative) fix for security problem reported by - security@gulftech.org: we were not properly php-escaping xml received for - BASE64 and NAME tags; - some more patching related to junk received in xml messages/responses: if the - PHP code built from the parsed xml is broken, catch any generated errors - without echoing it to screen but take note of the error and propagate to user - code - - * xmlrpcs.inc: some more patching related to junk received in xml messages/ - responses: if the PHP code built from the parsed xml is broken, catch any - generated errors without echoing it to screen but take note of the error and - propagate to user code - -2005-06-24 Gaetano Giunta - - * xmlrpc.inc: fixed php_xmlrpc_encode detection of php arrays (again!); - removed from wrap_php_function the part about setting a custom error handler - (it can be activated using the more general $server->setdebug(3) anyway) - - * xmlrpcs.inc: added to server the capability to trap all processing errors - during execution of user functions and add them to debug info inside responses; - return a (new) xmlrpcerr response instead of raising some obscure php execution - error if there is an undefined function in the dispatch map - - * testsuite.php: Added new testcases for recently implemented stuff - -2005-06-23 Gaetano Giunta - - * xmlrpc.inc: added new method: xmlrpcval->structmemexists, to check for - presence of a wanted struct member without having to loop through all members; - fix wrap_php_functions: correctly return false for php internal functions, - whose param list is unknown; - let addscalar fail as it should if called on struct vals; - fix addstruct: do not fail when called for adding stuff to initialized structs; - removed a warning generated when calling addscalar with inexistent type; - massive code review for speed: replaced each() loops with foreach(), removed - lots of useless assignments and duplications of data; - added 'http11' as valid method param for xmlrpclient->send: makes use of curl - for sending http 1.1 requests; - changed a couple '=' into '=&' where objects are returned; - fixed wrap_php_function() to better detect php errors while processing wrapped - function - - * xmlrpcs.inc: Fix php warnings generated when clients requested method - signature / description for a method that had none in its dispatch map; - turned server->debug into an integer value that will change the amount of - logging going as comments into xmlrpc responses - - * server.php: set default server debug level to 2 - - * testsuite.php: removed calls to deleted functions (xmlrpc_encode, - xmlrpc_decode); - added html page title describing target servers used for tests; - added an assign-by-ref - - * phpunit.php: Do not consider as failures PHP 5 E_STRICT errors (arbitrary - choice, but lib is targeted at PHP 4) - -2005-06-22 Gaetano Giunta - - * xmlrpc.inc: removed lottsa old code that had been left in commented - - * xmlrpc.inc: fixed setting of proxy port - - * xmlrpc.inc: removed one warning when trying to decompress junk sent as - deflated response - - * xmlrpc.inc: changed the error messages (but not the code) that will be found - in xmlrpcresponses when there are socket errors, to differentiate from HTTP - errors - - * xmlrpc.inc: refactored xmlrpcclient->sendpayloadHTTPS: now it calls a new - method (sendpayloadCURL) that could be used also for generating HTTP 1.1 - requests - - * xmlrpc.inc: added two new methods: wrap_php_function and wrap_xmlrpc_method: - designed to let the lazy programmer automagically convert php functions to - xmlrpc methods and vice versa. Details are in the code - - * debugger/*: added initial revision of a 'universal xmlrpc debugger' - -2005-06-20 Gaetano Giunta - - * xmlrpc.inc: replace usage of 'echo' with error_log when errors arise - in manipulation of xmlrpcval objects - - * xmlrpc.inc: replaced
with
in dump function - - * xmlrpc.inc: added method structsize to xmlrpcval class (alias for arraysize) - - * xmlrpc.inc: addarray() now will add extra members to an xmlrpcval object - of array type; addstruct() can be used to add members to an xmlrpcval object - of struct type - - * xmlrpcs.inc: Added member allow_system_funcs to server: controls whether the - server accepts or not calls to system.* functions - -2005-05-10 Gaetano Giunta - - * xmlrpc.inc: fix regression in php_xmlrpc_encode when encoding php hashes; - fix decompression of gzip/deflated xmlrpc responses; - set user agent string correctly in SSL mode (was forgetting lib name); - add allowed encoding http headers in requests; - do not pass http headers back from curl to parseresponse, to avoid re-decoding - compressed xml or http 100 headers - - * xmlrpcs.inc: added method setDebug; - renamed compress_output to compress_response; - do not try to set http headers if they have already been sent, because trying - to do so will raise a PHP error, and if headers have been sent something has - gone wrong already (shall we send a meaningful error response instead?) - -2005-05-08 Gaetano Giunta - - * xmlrpcs.inc, xmlrpcs.inc: reverted to usage of '=& new' for better - performance on (some) php4 installs. - NB: PHP 3 compatibility is deprecated from now on! - - * xmlrpc.inc: decode xmlrpc boolean type to native php boolean - - * xmlrpcs.inc, xmlrpcs.inc: switched $_xh[$parser] to $_xh, since indexing - an array by object will give a warning in php 5 (and we were resetting the - array of _xh elements on every call anyway) - - * xmlrpc.inc: commented unused code used originally for escaping content - - * xmlrpc.inc: commented deprecated methods xmlrpc_encode and xmlrpc_decode - - * xmlrpc.inc: php_xmlrpc_encode: encode integer-indexed php arrays as xmlrpc - arrays instead of structs; if object given to encode is an xmlrpcval return it - instead of reencoding (makes easier calling encode on an array of xmlrpcvals) - - * xmlrpcs.inc: added $debug field to server class; if false will prevent - the server from echoing debug info back to the client as xml comment - - * xmlrpcs.inc: let the server add to the debug messages the complete request - payload received and (if php installed as apache module) http headers, so that - the client in debug mode can echo a complete fingerprint of the communication - - * xmlrpcs.inc: changed API of ParseRequest method: now it cannot be called - without a 'data' parameter; added 2nd parameter (http encoding); changed the - call to this method from inside service() method - - * xmlrpc.inc, xmlrpcs.inc: enable both server and client to parse compressed xml - (if php is compiled with zlib); client should also be able to decode chunked - http encoding - - * xmlrpc.inc: add support for proxies (only basic auth supported); default port - is 8080 (if left unspecified) - - * xmlrpc.inc: use lowercase for names of http headers received (makes using - them much simpler, since servers can use any upper/lowercase combination) - - * xmlrpc.inc: bumped version number to '2.0 beta' - -2005-05-08 Gaetano Giunta - - * release of version 1.1 - -2005-04-24 Gaetano Giunta - - * xmlrpcs.inc: removed charset declaration from xml prologue of responses, - since we are now escaping all non-ascii chars in an encoding-independent way - - * bug_http.xml: modified to exercise some extra functonality of the lib - (it should now be failed by the current PEAR implementation of the lib) - - * xmlrpc.inc: bumped up rev. number to 1.1 - - * doc/xmlrpc_php.xml, doc/announce1_1.txt: documentation updates - - * Makefile: updated to reflect new xml doc source, modified filelist - -2005-04-17 Gaetano Giunta - - * client.php, agesort.php, introspect.php, introspect_demo.php, - which.php, test.pl, test.py: use as default target the server.php page hosted - on phpxmlrpc.sf.net - - * server.php: fix for register_globals off; refer to docs on phpxmlrpc.sf.net - -2005-04-15 Miles Lott - - code formatting and comments - -2005-04-03 Gaetano Giunta - - * xmlrpc.inc: make use of global var $xmlrpcName in building User_Agent HTTP - header (in conjunction with $xmlrpcVersion) - - * agesort.php, client.php, comment.php, dicuss.php, mail.php, server.php, - which.php: various janitorial fixes - + always html escape content received from xmlrpc server or from user input - + make the scripts run fine with register_globals off an register_long_arrays off - + always use the functions php_xmlrpc_en(de)code, even if the EPI extension - is not installed - + in mail.php, allow user to see script source even if support for .phps files - is not configured in the local web server - - * testsuite.php: better detection of local webserver hostname for running tests - against (if the user did not supply a webserver name) - -2005-03-21 Gaetano Giunta - - * xmlrpcs.inc: revert to a PHP3 compatible script (change '=& new' to '= new') - - * xmlrpc.inc: revert to a PHP3 compatible script (lottsa fixes) - - * testsuite.php: default to using local server as test target if no user - provided values are available instead of heddley.com server - - * testsuite.php: play nice to PHP3 in retrieving user-passed values - - * testsuite.php: fix constructor method name for a type of tests - - * phpunit.php: fix all cases of call-time-pass-by-ref - - * phpunit.php: rename Exception class to _Exception if the script is run with - PHP 5 (exception is a reserverd word) - -2005-03-19 Gaetano Giunta - - * xmlrpc.inc: fixed bug in new http header parsing code in case there is - no correct separator between response headers and body - - * xmlrpc.inc: added recognizing and stripping of HTTP/1.1 100 response headers - - * xmlrpc.inc: strip extra whitespace from response body, as well as any junk - that comes after the last tag. It allows the server code to - be put on public providers that add e.g. javascript advertising to served pages - - * xmlrpc.inc: removed unused parts of code, trailing whitespace - - * xmlrpc.inc: fix possible bug (?) in xmlrpc_ee for BOOLEAN values: true was - being handled differently than false - - * testsuite.php: added a new file-based test to stress the response parsing - modifications recently introduced; enabled debugging for file based tests - -2005-03-15 Gaetano Giunta - - * xmlrpc.inc: fixed missing declaration of global vars in xmlrpc_dh, - sendpayloadhttps and sendpayloadhttp10 - - * xmlrpc.inc: changed error message for invalid responses: 'enable debugging' - is more clear that 'enabling debugging' (the user is being encouraged to do it) - - * xmlrpc.inc: rewrote HTTP response header parsing. It should be more tolerant - of invalid headers, give more accurate error messages and be marginally faster, - too. - - * xmlrpc.inc: cosmetic whitespace fixes and remove useless one-liners - - * xmlrpc.inc: build a shorter PHP command line to be evaluated for rebuilding - values from parsed xml: use '$val =& nex xmlrpcval("value")' for string values - instead of '$val =& nex xmlrpcval("value", $xmlrpcString)' - - * xmlrpc.inc: fix change introduced 2005/01/30 moving call to curl_close() - too early: it did not work on error situations - - * testsuite.php: fix name of testAddingTest method, renamed testErrosString - into testErrorString and removed useless warning for register_globals=off case - -2005-02-27 Gaetano Giunta - - * xmlrpc.inc: do not echo XML parsing error to screen (it is already dumped - into error log) - - * xmlrpc.inc: set hdrs field into response object in case of XML parsing error - (uniform behaviour with other responses) - -2005-02-26 Gaetano Giunta - - * xmlrpc.inc: use global var $xmlrpcVersion as number for user agent string - - * xmlrpcs.inc: eliminate server side PHP warning and give back to caller - a better error msg in case the called method exists but no signature matches - the number of parameters - -2005-02-20 Gaetano Giunta - - * xmlrpc.inc: accept a + sign in front of floats / integers, since the spec - clearly mentions it - - * xmlrpc.inc, xmlrpcs.inc: renamed function XmlEntities to xmlrpc_encode_entitites, - to avoid using the same name as an array already defined - - * xmlrpc.inc: fix bug introduced with escaping of UTF8 chars in xmlrpc error - responses: correct behaviour is to escape chars inside serialize(), not when - calling the xmlrpcresp creator - - * testsuite.php: made test suite more friendly to modern PHP configs, allowing - register_globals to be off and to set in the URL all testing parameters; - added tests for newly introduced fixes; renamed existing tests acording to the - docs inside phpunit.php (e.g. no subclass of TestCase should have a name - starting with test...) - -2005-02-19 Gaetano Giunta - - * xmlrpc.inc: accept patch 683153 by mah0: if timeout is set, allow all socket - operations to timeout at the given time, not only the socket connection - -2005-02-13 Gaetano Giunta - - * xmlrpc.inc: be tolerant to double values received in exponential notation: - even though the spec forbids their usage PHP is fine with them - - * xmlrpc.inc: fix bug: new xmlrpcval('-1') was creating an empty value instead - of a string value! - - * xmlrpc.inc, xmlrpcs.inc: fix the payload encoding changes introduced by - Andres Salomon on 2004-03-17: sending named html entities inside an xml chunk - makes it invalid, and thus renders the lib absolutely non-interoperable with - any other xmlrpc implementation; moreover the current implementation only ever - worked for non-ascii requests, while breaking client-parsing of responses - containing non-ascii chars. - The principle of using entities is preserved though, because it allows the - client to send correct xml regardless of php internal charset encoding vs. - xml request charset encoding, but using 'character references' instead. - - * xmlrpc.inc: encode (non-ascii) chars into charset entities also for error - strings - - * xmlrpcs.inc: encode (non-ascii) chars into charset entities also for debug - messages - - * xmlrpcs.inc: added 'Accept-Charset' header in http request to let the server - know what kind of charset encoding we do expect to be used for responses - - * xmlrpc.inc, xmlrpcs.inc: explicitly tell the xml parser what charset the - application expects to receive content in (notably strings). A new variable, - $xmlrpc_internalencoding, (defaulting to ISO-8859-1) defines what charset the - parser will use for passing back string xmlrpcvals to the PHP application - (both server-side and client-side). - This allows transparent usage of e.g. UTF-8 for encoding xml messages between - server and client and ISO-8859-1 for internal string handling. - ISO-8859-1 is, AFAIK, PHP internal encoding for all installs except - mbstring-enabled ones. - -2005-02-12 Gaetano Giunta - - * xmlrpcs.inc: use '$var =& new(' construct to assign objects: on older versions - of PHP objects are first built then copied over if the ampersand is omitted. - Using it should make the code a little bit faster... - - * doc/xmlrpc.php: update lib version number, release date in preparation for - next release - - * makefile: update lib version number in preparation for next release - - * xmlrpc.inc: split up parsing of xmlrpc INT and DOUBLE values. This allows - finer-grained control over valid values: now the '.' char is not allowed - any more inside int values. - - * xmlrpc.inc: fix for bug #560303: ints and doubles starting with '0' chars are - no more parsed as octal values - -2005-01-30 Gaetano Giunta - - * xmlrpc.inc: Modifed last change by Miles: the functions php_xmlrpc_encode - and php_xmlrpc_decode are now always defined, regardless of the existence of - XMLRPC-EPI. This allows users to start using these functions as the 'default' - functions, and pave the way for future deprecation of xmlrpc_encode/encode - while maintaining a stable API. - - * xmlrpc.inc: use '$var =& new(' construct to assign objects: on older versions - of PHP objects are first built then copied over if the ampersand is omitted. - Using it should make the code a little bit faster... - - * xmlrpc.inc: close curl connection as soon as possible for https requests: - it could save some memory / resources. - - * xmlrpc.inc: added some extra info in the PHP error log message generated - when an invalid xmlrpc integer/float value is encountered and we try to - deserialize it. - - * xmlrpc.inc: added @ char before fsockopen to avoid echoing useless warnings - when connection to server fails; added the same to avoid echoing warnings when - deserializing data of an unknown type - - * xmlrpc.inc: reset the _xh array on each xmlrpc call: otherwise a new array - member is created for each consecutive call and never destroyed, thus making it - impossible to build an xmlrpc-client daemon beacuse of memory leaking. - - * xmlrpc.inc: declare global the variables that are used as 'constants', - so that xmlrpc.inc will work even if it is included from within a function - -2004-12-27 Miles Lott - * xmlrpc.inc: A new constant, XMLRPC_EPI_ENABLED, is defined depending on - the existence of the function, xmlrpc_decode. This function will exist in - PHP if the extension, XMLRPC-EPI (http://xmlrpc-epi.sourceforge.net), is - loaded. It defines the functions xmlrpc_encode and xmlrpc_decode, which - will conflict with functions of the same name in xmlrpc.inc. If this - extension is loaded, we instead use the names php_xmlrpc_encode and - php_xmlrpc_decode. Please look at server.php, testsuite.php, etc., for - how this should be handled if using these functions. - -2003-04-17 Andres Salomon - * xmlrpc.inc: encode strings using htmlentities() instead of - htmlspecialchars(), and add xmlrpc_html_entity_xlate(). This - should fix longstanding issues with sending weird chars (from - non-USASCII codesets like UTF-8, ISO-8859-1, etc) that caused - the xml parser to choke. Multi-byte chars are now changed to - entities before sending, so that the xmlrpc server doesn't need - to know the encoding type of the POST data. - * xmlrpcs.inc: call xmlrpc_html_entity_xlate before parsing - request packet. The parser chokes on unknown entities (the - entities created by htmlentities() are exactly that; html - entities, not xml entities), so they must be converted from - name form (é) to numerical form (é). - -2003-01-12 Andres Salomon - - * released 1.0.99.2. - * Makefile: separate doc/Makefile a bit more from Makefile, - and add clean rules. - -2003-01-10 Andres Salomon - - * xmlrpc.inc: xmlrpcresp and parseResponse cleanups; variable - name renames ('xv' to 'val', for example), type checking, and - stricter default values. - * xmlrpc.inc: fix xmlrpcresp's faultcode; return -1 for FAULT - responses from the server whose faultcodes don't reflect any - errors. - -2003-01-08 Andres Salomon - - * xmlrpc.inc: rename $_xh[$parser]['ha'] to - $_xh[$parser]['headers']. - * xmlrpc.inc: fix bugs related to $_xh[$parser]['headers]; - some places treated this as an array, others as a scalar. - Treat unconditionally as an array. Also wrap header debugging - output in PRE tags. - -2002-12-17 Andres Salomon - - * released 1.0.99. - * Makefile: changed the tarball format/dist rule to a more - conventional form, as well as normal release updates. - * xmlrpc.inc: added setSSLVerifyPeer and setSSLVerifyHost; as - of curl 7.10, various certificate checks are done (by default). - The default for CURLOPT_SSL_VERIFYHOST is to ensure the common - name on the cert matches the provided hostname. This breaks a - lot of stuff, so allow users to override it. - * doc/xmlrpc_php.sgml: updated documentation accordingly. - -2002-09-06 Geoffrey T. Dairiki - - Add support for system.multicall() to both the client - and the server. - - * testsuite.php: Add new tests 'testServerMulticall', - and 'testClientMulticall'. - - * xmlrpc.inc: Added new error messages for system.multicall(). - * xmlrpcs.inc: Added new procedure call system.multicall(). - See http://www.xmlrpc.com/discuss/msgReader$1208 for details. - - * xmlrpc.inc: Added system.multicall functionality to - xmlrpc_client. xmlrpc_client::send can now take an array of - xmlrpcmsg's as an argument. In that case it will attempt - to execute the whole array of procure calls in a single - HTTP request using system.multicall(). (If that attempt fails, - then the calls will be excuted one at a time.) The return - value will be an array of xmlrpcresp's (or 0 upon transport - failure.) - -2001-11-29 Edd Dumbill - - * xmlrpc.inc: fixed problem with processing HTTP headers that - broke any payload with more than one consecutive newline in it. - also initialise the 'ac' array member to empty string at start. - * testsuite.php: added unit test to exercise above bug - * xmlrpcs.inc: fixed uninitialized variable $plist - -2001-09-25 Edd Dumbill - - * xmlrpc.inc: applied urgent security fixes as identified by Dan - Libby - -2001-08-27 Edd Dumbill - - * xmlrpc.inc: Merged in HTTPS support from Justin Miller, with a - few additions for better traceability of failure conditions. Added - small fix from Giancarlo Pinerolo. Bumped rev to 1.0. Changed - license to BSD license. - -2001-06-15 Edd Dumbill - - * xmlrpcs.inc: Added \r into return MIME headers for server class - -2001-04-25 Edd Dumbill - - * server.php: Added interop suite of methods. - -2001-04-24 Edd Dumbill - - * testsuite.php: added in test case for string handling bug. - - * xmlrpc.inc: merged in minor fixes from G Giunta to fix - noninitialization. Created new method, getval(), which includes - experimental support for recreating nested arrays, from Giunta and - Sofer. Fixed string handling bug where characters after - but before weren't ignored. Added in support for native - boolean type into xmlrpc_encode (Giunta). - - * xmlrpcs.inc: updated copyright notice - -2001-01-15 Edd Dumbill - - * xmlrpc.inc: fixed bug with creation of booleans. Put checks in - to ensure that numbers were really numeric. Fixed bug with - non-escaping of dollar signs in strings. - - * testsuite.php: created test suite. - -2000-08-26 Edd Dumbill - - * xmlrpcs.inc: added xmlrpc_debugmsg() function which outputs - debug information in comments inside the return payload XML - - * xmlrpc.inc: merged in some changes from Dan Libby which fix up - whitespace handling. - - * xmlrpcs.inc: added Content-length header on response (bug from - Jan Varga . This means you can no longer print - during processing - - * xmlrpc.inc: changed ereg_replace to str_replace in several - places (thanks to Dan Libby for this). - - * xmlrpc.inc: added xmlrpc_encode() and xmlrpc_decode() from Dan - Libby--these helper routines make it easier to work in native PHP - data structures. - -2000-07-21 Edd Dumbill - - * xmlrpc.inc: added xmlrpc_client::setCredentials method to pass - in authorization information, and modified sendPayload* methods to - send this OK. Thanks to Grant Rauscher for the impetus to do this. - Also, made the client send empty if there are no - parameters set by the user. - - * doc/xmlrpc_php.sgml: updated documentation to reflect recent - changes - - -2000-07-18 Edd Dumbill - - * server.php: added examples.invertBooleans method to server as a - useful test method for boolean values. - - * xmlrpc.inc: rearranged the way booleans are handled to fix - outstanding problems. Fixed calling addScalar() on arrays so it - works. Finally fixed backslashification issues to remove the - problem will dollar signs disappearing. - - * booltest.php: really fixed booleans this time. - -2000-06-03 Edd Dumbill - - * xmlrpcs.inc: made signature verification more useful - now - returns what it found was wrong - - * xmlrpc.inc: fixed bug with decoding dateTimes. Also fixed a bug - which meant a PHP syntax error happened when attempting to receive - empty arrays or structs. Also fixed bug with booleans always being - interpreted as 'true'. - - * server.php: Added validator1 suite of tests to test against - validator.xmlrpc.com - - -2000-05-06 Edd Dumbill - - * released 1.0b6 - - * added test.pl and test.py, Perl and Python scripts that exercise - server.php somewhat (but not a lot) - - * added extra fault condition for a non 200 OK response from the - remote server. - - * added iso8601_encode() and iso8601_decode() to give some support - for passing dates around. They translate to and from UNIX - timestamps. Updated documentation accordingly. - - * fixed string backslashification -- was previously a little - overzealous! new behavior is '\' --> '\\' and '"' --> - '\"'. Everything else gets left alone. - -2000-04-12 Edd Dumbill - - * updated and bugfixed the documentation - - * fixed base 64 encoding to only happen at serialize() time, - rather than when a base64 value is created. This fixes the double - encoding bug reported by Nicolay Mausz - . The same approach ought to be taken with - encoding XML entities in the data - this is a TODO. - - * integrated further code from Peter Kocks: used his new code for - send(), adding a second, optional, parameter which is a timeout - parameter to fsockopen() - -1999-10-11 Edd Dumbill - - * added bug fixes from Peter Kocks - -1999-10-10 Edd Dumbill - - * updated the documentation - -1999-10-08 Edd Dumbill - - * added system.* methods and dispatcher, plus documentation - - * fixed bug which meant request::getNumParams was returning an - incorrect value - - * added signatures into the dispatch map. This BREAKS - COMPATIBILITY with previous releases of this code - -1999-08-18 Edd Dumbill - - * made entity encoding and decoding transparent now on string - passing. - - * de-globalised the globals in the parse routines, using an - associative array to hold all parser state $_xh - - * changed default input encoding to be UTF-8 to match expectation - - * separated out parseResponse into parseResponse and - parseResponseFile so that you can call parseResponse on a string - if you have one handy - -1999-07-20 Edd Dumbill - - * Moved documentation into Docbook format - -1999-07-19 Edd Dumbill - - * Added an echo server into server.php and echotest.php, a client - which will exercise the new echo routine. - - * Added test for no valid value returned: in this case will now - throw the error "invalid payload" - - * Added serialize() method to xmlrpcresp to return a string with - the response serialized as XML - - * Added automatic encoding and decoding for base64 types - - * Added setDebug() method to client to enable HTML output - debugging in the client - -1999-07-08 Edd Dumbill - - * Improved XML parse error reporting on the server side to send it - back in a faultCode packet. expat errors now begin at 100 - -1999-07-07 Edd Dumbill - - * Changed the structmem and arraymem methods of xmlrpcval to always - return xmlrpc vals whether they referred to scalars or complex - types. - - * Added the server class and demonstrations - - * Fixed bugs in the XML parsing and reworked it +NB: All recent commits are available online. +This file will not be updated further. +See https://github.com/gggeek/phpxmlrpc/commits/master + + +2014-02-3 - G. Giunta (giunta.gaetano@gmail.com) + + * bumped up requirements to php 5.1.0 + +2014-01-10 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: when using curl and keepalive, reset curl handle if we did not get back an http 200 response (eg a 302) + + * testsuite.php, parse_args.php: update testsuite + + * debugger/controller.php: change default path to javascript debugger + +2010-05-23 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: omit port on http 'Host' header if it is 80; + add a namespace declaration in response if ex:nil is in use + +2010-04-12 - G. Giunta (giunta.gaetano@gmail.com) + + * testsuite.php, parse_args.php: testsuite allows interrogating https servers ignoring their certs + + * xmlrpc.inc: method setAcceptedCompression was failing to disable reception + of compressed responses if the client supported them (triggering a bug with + https and php < 5.3 on windows); remove a php warning that could be + generated when using debug=2 in a client connecting to an https + server + +2010-04-11 - G. Giunta (giunta.gaetano@gmail.com) thanks amoe + + * fixed: bad variables in "make install" make target + +2009-11-11 - G. Giunta (giunta.gaetano@gmail.com) thanks Ikiro Watanabe + + * added INSTALL file + +2009-09-05 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpcs.inc, xmlrpcs.inc: remove code that was left for compatibility + with php 4; use __METHOD__ constant for error messages instead of hardcoded + values + + * xmlrpcs.inc: catch exceptions thrown during execution of invoked methods; + check for $_SERVER having been disabled via php.ini and log an error if so + + * server.php, testsuite.php: add a new test and server method for exception + catching in the server + + * xmlrpc.inc: added new method SetUserAgent to client to allow having different + user-agent http headers + + * tagged and released as 3.0.0 beta + +2009-08-05 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc_wrappers.inc: improve compatibility with php 5.0 when registering + class/object methods + +2009-08-02 - G. Giunta (giunta.gaetano@gmail.com) thanks Laurens + + * xmlrpcs.inc: add a new member var in server class to allow fine-tuning + of the encoding of returned values when the server is in 'phpvals' mode; + allow servers in 'xmlrpcvals' mode to also register plain php functions by + defining them in the dispatch map with an added option: + 'parameters_type' => 'phpvals' (feature request #2806628) + + * xmlrpc.inc: added new method xmrlpc_client::SetCurlOptions($array) to + allow extra flexibility in tweaking http config, such as explicitly + binding to an ip address (feature request #2787468); fix bad encoding if + same object is encoded twice using php_xmlrpc_encode; removed some by-ref + assignments and declarations + +2009-07-31 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: add support for dateTime objects in both in php_xmlrpc_encode + and as parameter for constructor of xmlrpcvals; add support for timestamps + as parameter for constructor of xmlrpcvals; add option 'dates_as_objects' to + php_xmlrpc_decode to return dateTime objects for xmlrpc datetimes + + * benchmark.php, xmlrpc_wrappers.inc: remove usage of split(), deprecated in + php 5.3 + + * benchmark.php: fixed url of server page used for testing; improved + verification of correspondence of test results; added more variants for + http options comparison + + * verify_compat.php: check for php version 5 for client side too + + * makefile: remove from build the compat directory + +2009-07-26 - G. Giunta (giunta.gaetano@gmail.com) + + * server.php: remove usage of ereg*(), deprecated in php 5.3 + +2009-07-16 - G. Giunta (giunta.gaetano@gmail.com) thanks Jean-Jacques Sarton + + * xmlrpc.inc: add support for the from the apache library, both + in input and output (feature request #...) + + * xmlrpc.inc, testsuite.php: remove usage of split(), deprecated in php 5.3 + + * testsuite.php: flush better results with output_buffering on + + * server: php: avoid one warning about static function calls + +2009-07-02 - G. Giunta (giunta.gaetano@gmail.com) thanks Heiko Stuebner + + * xmlrpc.inc: fix: when checking the parameters against the signatures xmlrpc + checks for "array" but PHP returns "Array" resulting in a not matches signature + +2009-05-07 - G. Giunta (giunta.gaetano@gmail.com) + + * replace all usage of '= & new' with '= new', as this is deprecated in php 5 + and has been shown to cause problems too + +2009-05-06 - G. Giunta (giunta.gaetano@gmail.com) + + * create php4 branch, rename trunk to 3.0.0beta - it will be the php5-only version + + * xmlrpc.inc: removed test for php version and inclusion of compat patches for really + really old versions of php 4 + +2009-03-16 - G. Giunta (giunta.gaetano@gmail.com) thanks Tommaso Trani + + * move from CVS to SVN on sf.net; file layout now is the same as in packaged lib + + * xmlrpc.inc: fix php warning when receiving 'false' in a bool value + + * Makefile, doc/Makefile: alter to follow new file layout + + * tagged and released as 2.2.2 + +2009-02-03 - G. Giunta (giunta.gaetano@gmail.com) + + * debugger/action.php: improve code robustness when parsing system.listmethods + and system.describemethods call + + * xmlrpc.inc: format floating point values using the correct decimal separator + even when php locale is set to one that uses comma (bug #2517579); + use feof() to test if socket connections are to be closed instead of the + number of bytes read (bug #2556209) + +2008-10-29 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpcs.inc: allow add_to_map server method to add docs for single params, too + +2008-09-20 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc_wrappers.inc: added the possibility to wrap for exposure as xmlrpc + methods plain php class methods, object methods and even whole classes + + * testsuite.php, server.php: added test cases for the new code + +2008-09-07 - G. Giunta (giunta.gaetano@gmail.com) thanks Bruno Zanetti Melotti + + * xmlrpc.inc: be more tolerant in detection of charset in http headers (fix for bug #2058158) + +2008-04-05 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: fix encoding of UTF8 chars outside of the BMP + + * xmlrpcs.inc: fix detection of zlib.output_compression (thanks xbert) + +2008-03-06 - G. Giunta (giunta.gaetano@gmail.com) + + * tagged and released as 2.2.1 + + * Makefile: improve usage on windows xp despite cmd's broken mkdir + +2007-10-26 - G. Giunta (giunta.gaetano@gmail.com) thanks sajo_raftman + + * xmlrpc.inc: remove one warning in xmlrpc_client creator + +2007-10-26 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: improve support for windows cp1252 character set (still + commented in the code) + +2007-09-05 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc, xmlrps.inc: do not try to set invalid charsets as output for + xml parser, even if user set them up for internal_encoding (helps encoding + to exotic charsets, while decoding to UTF8) + +2007-09-05 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: fix parsing of '1e+1' as valid float + +2007-09-01 - G. Giunta (giunta.gaetano@gmail.com), thanks Frederic Lecointre + + * xmlrpcs.inc: allow errorlevel 3 to work when prev. error handler was a static method + + * testsuite.php: fix test on setCookie() + +2007-08-31 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: minor fix in cookie parsing + +2007-07-31 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: Fix usage of client::setcookie() for multiple cookies in non-ssl mode + +2007-07-26 - G. Giunta (giunta.gaetano@gmail.com) thanks Mark Olive + + * xmlrpc.inc: Fix for bug # 1756274 (usage of cookies in ssl mode) + +2007-04-28 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: give more detailed curl information when DEBUG = 2; fix handling + of case where curl w. keepalive is used and one connection of many fails + + * testsuite improvements: add one testcase; give feedbcak while tests are + running + +2007-04-01 - G. Giunta (giunta.gaetano@gmail.com) + + * doc/makefile, doc/custom.fo.xsl: improve pdf rendering of php source code + + * makefile: recover version number from source instead of having it hardcoded + +2007-03-10 - G. Giunta (giunta.gaetano@gmail.com) + + * doc/makefile, doc/convert.php, doc/*.xsl: created customizations xslt to + produce a documentation more in line with the php manual, esp. with regards + to functions synopsis; added jellyfish book cover as local resource and a + screenshot of the debugger too; various updates to the manual source; added + a php script to highlight examples inside html docs + +2007-03-09 - G. Giunta (giunta.gaetano@gmail.com) + + * debugger/action.php: css tweak for IE + + * added phpunit license file in the phpunit directory + + * added link to license (on sf.net site) to many files + +2007-03-04 - G. Giunta (giunta.gaetano@gmail.com) + + * Makefile, doc/makefile: assorted improvements + +2007-03-03 - G. Giunta (giunta.gaetano@gmail.com) + + * xmlrpc.inc: micro-optimization in declaration of global vars xmlrpcerr, xmlrpcstr + +2007-02-25 Gaetano Giunta + + * removed a couple of warnings emitted in testsuite.php + + * doc/makefile: added command for invocation of xxe to generate docs + + * better rendering of docs in xml+css format for function prototypes + + * updated documentation + + * tagged and released as 2.2 + +2007-02-22 Gaetano Giunta + + * debugger: workaround for case of magic_quotes_gpc being set (properly + unescape user input); fix case of user not setting msg id in jsonrpc case + when executing a remote method; allow strings, false, true and null as msg id + +2007-02-13 Gaetano Giunta + + * testsuite.php: added one test for automatic encoding/decoding case + +2007-02-05 Gaetano Giunta + + * xmlrpc.inc: slightly faster encoding of UTF8 data to ascii + +2007-01-11 Gaetano Giunta + + * xmlrpc.inc: when calling client::multicall() with an unspecified http version, + use the client default rather than the fixed 'http 1.0' + +2006-09-17 Gaetano Giunta + + * xmlrpc.inc, xmlrpcs.inc, testsuite.php: added support for and + system.getCapabilities, and one more testcase to go with it + +2006-09-05 Gaetano Giunta + + * xmlrpc.inc: fix support for https through proxies; client parses debug + messages sent by client even for compressed responses; + + * testsuite.php, parse_args.php: added 3 test cases for proxy connections + +2006-09-01 Gaetano Giunta + + xmlrpc_wrappers.inc: add two more options in wrap_xmlrpc_method and fix + typo to allow obj encoding + +2006-08-28 Gaetano Giunta + + * xmlrpc_wrappers.inc: more options added to wrap_php_function and + wrap_xmlrpc_method + + * xmlrpc.inc: pave the way to support for + + * doc/xmlrpc_php.xml documentation updated + + * tagged and released as 2.1 + +2006-08-25 Gaetano Giunta + + * xmlrpc.inc: stricter parsing of incoming messages: detect two DATA elements + inside an ARRAY, a STRUCT or SCALAR inside an already filled VALUE + + * testsuite.php: added two testcases to check for the above cases + +2006-08-24 Gaetano Giunta + + * xmlrpc.inc: more code optimization in xmlrpcval::serialize() and + php_xmlrpc_encode(); fixed bug where struct elements with non-ascii chars + in their name would not be properly encoded + + * testsuite.php: added a testcase for the new bug + +2006-08-23 Gaetano Giunta + + * remove old code left in comments across many files; many more javadoc + comments added + + * xmlrpc.inc: a bit of code optimization: reorder switch() statements of + xml parsing element handlers; inline code for xmlrpcval() - this breaks + new xmlrpcval('true') and changes error msgs on new xmlrpcval($x, 'invalid_type') + + * testsuite.php: change according to above + + * benchmark.php: basic support for xdebug 2 profiling + +2006-08-22 Gaetano Giunta + + * xmlrpc.inc: addscalar() and addstruct() where not returning 1 when adding + data to an already formed value + +2006-08-21 Gaetano Giunta + + * xmlrpcs.inc, xmlrpc.inc: added support for emulating the xmlrpc-extension + API (the full emulation layer is part of the extras package); + fix support for the HTTP 'deflate' encoding + + * xmlrpc.inc: better support for http compression with and without CURL; + a minor decoding speedup; added a new function: php_xmlrpc_decode_xml(), + that will convert into the appropriate object the xml representation of + either a request, response or a single value; log reception of invalid + datetime values + + * xmlrpcs.inc: add a new parameter and return type to server->service(); + let server->add_to_map() accept method definitions without parameter types + + * xmlrpc_wrappers.inc: more logging of errors; wrap_php_functions now takes + more options; better support for jsonrpc; escape quote chars when wrapping + remothe servers / remote methods + + * added cvs Id tag to files that missed it; speling fixes; updated NEWS files + +2006-08-07 Gaetano Giunta + + * assorted fixes to make the suite more compatible with php 4.0.5 and 5.x + +2006-07-02 Gaetano Giunta + + * xmlrpc_warppers.inc: added new function to wrap entire remote server into + a local php class; changed default calling synopsis of wrap_remote_method, + to ease passing multiple options at a time (but old syntax still works!) + + * updated makefile, debugger/action.php in accord with the above + +2006-06-30 Gaetano Giunta + + * added to debugger capability to generate json-rpc code stubs + + * added to debugger capability to load and launch self correctly if + controller.php is called directly from outside processes (single url access) + +2006-06-26 Gaetano Giunta + + * moved wrap_php_functions and wrap_xmlrpc_method into a file of their own. + This will let us add further stub functionality without the base lib growing too much. + All of the files that reference this functionality have been modified accordingly. + + * made wrap_xmlrpc_method generate better code (with php type juggling), and + some phpdoc for the generated function, too + + * added to debugger an option to produce for the user the generated php code + for wrapping a call to a remote method into a php function + +2006-06-22 Gaetano Giunta + + * xmlrpcs.inc: added description of parameters for system.xxx methods (useful with + html-self-documenting servers); + server->service() now returns response object, in case user has need for it... + + * xmlrpc.inc: save full response payload into xmlrpcresp obj for better debugging + +2006-06-15 Gaetano Giunta + + * verify_compat.php: more tests + +2006-06-09 Gaetano Giunta + + * xmlrpcs.inc: fixed sending of compressed responses when output compression + is already enabled in php.ini + + * verify_compat.php: split tests between server and client cases + +2006-05-29 Gaetano Giunta + + * added new file: verify_compat.php, to help troubleshooting platform + support for the library; added it to makefile, too + +2006-05-24 Gaetano Giunta + + * xmlrpc.inc: removed residual usage of regexp in favour of pregexps; fixed + a bug in specifying Host http header with non std ports + +2006-05-23 Gaetano Giunta + + * xmlrpc.inc: improvements to wrap_php_function: let it deal correctly + with php functions returning xmlrpcresp objs; make it generate also + docs for single parameters (useful for documenting_xmlrpc_server class) + +2006-05-22 Gaetano Giunta + + * xmlrpc.inc, xmlrpcs.inc: minor performance tuning updates: replaced + some explode vs. split, ereg vs. preg, single vs. double quotes + + * xmlrpc.inc: fix wrap_xmlrpc_method to NOT rebuild php objects received + from the server by default, as it might pose a security risk + +2006-04-24 Gaetano Giunta + + * minor fixes makefiles. Tagged and released as 2.0 final + +2006-04-22 Gaetano Giunta + + * debugger/*: added option to set cainfo; improve web layout + + * xmlrpc.inc: set sslverifypeer to TRUE instaed of 1 by default + + * doc/php_xmlrpc.xml: documentation updates + +2006-04-21 Gaetano Giunta + + * xmlrpc.inc: added option to set ca certs dir instead of single cert + (used to validate server in https connetions) + +2006-04-18 Gaetano Giunta + + * xmlrpc.inc: fixed bug in xmlrpcval::structmemexists() + + * testsuite.php: added test case for xmlrpcval::structmemexists() + +2006-04-03 Gaetano Giunta + + * xmlrpc.inc: add support for Digest and NTLM authentication, both to server + and to proxies (note: must use CURL for this to work) + + * debugger/*: add support for Digest/NTLM auth to remote servers + +2006-03-19 Gaetano Giunta + + * xmlrpc.inc: fix a bug parsing of 'true' bool values; + added a new method to the client class: SetCaCertificate; + add column number in xml parsing error messages; + fix serialization of messages to ISO-8859-1 charset with php 5 (by adding + encoding to the xml prologue of generated messages) + + * xmlrpcs.inc: correct detection of charset in http headers; + add column number in xml parsing error messages; + fix serialization of responses to ISO-8859-1 charset with php 5 (by adding + encoding to the xml prologue of generated responses) + + * testsuite.php: added two more tests on charset encoding + + * NEWS: update info for impending release + +2006-03-23 Gaetano Giunta + + * added a new demo file: simple_call.php + +2006-02-20 Gaetano Giunta + + * xmlrpcs.inc: more error checking and logging with regard to user-coded + method handler functions not being well behaved; + fix a case where error handler would not be reset upon user function + returning not valid xmlrpresp + + * xmlrpc.inc: fix bug in detection of php 4.3.0 + + * Makefile: fix uppercase filenames + +2006-02-15 + + * xmlrpc.inc: parse 'true' and 'false' as valid booleans, even though the + spec is quite clear on that; fix small bug w. internal_encoding = utf8; add + definition of $GLOBALS['xmlrpcNull'] for extensibility, e.g. json or + extensions to the xmlrpc spec + +2006-02-05 Gaetano Giunta + + * xmlrpc.inc: fix bug in wrap_xmlrpc_method if client passed to function has + return_type=phpvals + + * all demo files: review code, add more comments and information + + * added 2 demo files: proxy.php (implementing an xmlrpc proxy server) and + wrap.php (showing usage of wrap_method_call) + +2006-02-04 Gaetano Giunta + + * xmlrpc.inc: fix bug in multicall in case of no fallback and server error + +2006-01-30 Gaetano Giunta + + * xmlrpc.inc: fix recursive serialization of xmlrpcvals loosing UTF8 charset; + correctly set type field of xmlrpcvals returned by send() calls + + * xmlrpcs.inc: add to server checks for correct return type of user-coded + method handling function; tolerate xmlrpcval instead of xmlrpcresp + + * minor change in xmlrpcresp internals, to ease subclassing (store payload + in an internal var on serialize(), same as xmlrpcclient does) + +2006-01-22 Gaetano Giunta + + * benchmark.php: do not run http 1.1 tests if CURL notfound + + * Released as 2.0 Rc3 + +2006-01-19 Gaetano Giunta + + * xmlrpc.inc: make xmlrpc_client::setDebug() accept int values instead of + boolean. At level 2, the request payload is printed to screen before being + sent; fix bug with repeated sending of the same msg object and using request + compression w. php 5.1.2 (objects passed by ref by default!!!) + + * xmlrpcs.inc: fix detection of clients accepting compressed responses + + * comment.php: remove warnings due to liberal usage of $HTTP_POST/GET_VARS + + * benchmark.php: add a test using http compression of both requests and + responses + + * testsuite.php: added test for fix in xmlrpc.inc + +2006-01-17 Gaetano Giunta + + * xmlrpcs.php: minor fix: do not raise a PHP warning when std server is + called via GET (global HTTP_RAW_POST_DATA undefined). Some might have called + it a security breach (path disclosure)... + +2006-01-15 Gaetano Giunta + + * testsuite.php: minor fix to expected date format in http cookie hedaer + to cope with PHP 5.1.2 + +2006-01-05 Gaetano Giunta + + * xmlrpcs.inc: merge code from the 'extras' subclass that allows server + to register plain php functions in dispatch map instead of functions + accepting a single xmlrpcmgs obj parameter. + One step closer to the kitchen sink!!! + +2005-12-31 Gaetano Giunta + + * xmlrpcs.inc: let the server accept 'class::method' syntax in the dispatch + map + + * testsuite.php, server.php: added new tests for the recent charset encoding + capabilities + +2005-12-24 Gaetano Giunta + + * xmlrpc.inc: correctly serialize() string xmlrpcvals that have been + created out of non-string php variables, when internal encoding is UTF8; + serialize to '0' int and double values created out of non-string php + variables, eg. 'hello', instead of creating invalid xmlrpc; + extend the php_xmlrpc_encode function to allow serializing string values + to charsets other tha US-ASCII; + minor tweak to xml parsing to allow correct parsing of empty strings when + in 'direct to php values' mode + + * xmlrpcs.inc: advances in system.multicall with plain php values + +2005-12-17 Gaetano Giunta + + * xmlrpcs.inc: let the functions implementing the system.* methods work + fine when called with plain php values as parameters instead of xmlrpcmsg + objects (multicall not quite finished yet...); + encode level 3 debug info as base64 data, to avoid charset encoding hell + + * xmlrpc.inc: added a new xmlrpc_2_php_type function, to get the name of + php types corresponding to xmlrpc types; + in debug mode, when detecting base64 server debug info, print it out fine + + * server.php: cosmetic fixes + +2005-12-09 Gaetano Giunta + + * xmlrpc.inc: remove one warning emitted when received xml contains an + unknown tag; remove warnings emitted when custom error handler is set + and user calls php_xmlrpc_encode/decode without the 2nd parameter + + * xmlrpcs.inc: added a param to service(), to allow the server to parse + data other than the POST body (useful for subclassing and debugging); + reworked the implementation of server debug messages at debug level 2: + since the debug info generated has no known charset, and putting it back + into the response's xml would most likely break it, send it back to the + client as a base64 encoded comment. Clients can decode it if they need it... + Add some more javadocs + + * testsuite.php: modified the string test, to see if the server can echo + back to the client the received data without breaking the response's xml + +2005-12-05 Gaetano Giunta + + * xmlrpc.inc, xmlrpcs.inc: let server and client objects decide if they + want to use some charset encoding other than US-ASCII for serialized data: + add a new var to both objects, and lots of parameters to function calls + that took none up to now; + refactored server method service() and parseRequest(), implementing a + new parserequestHeaders() method to explicitly deal with HTTP + +2005-12-01 Gaetano Giunta + + * moved the jsonrpc implementation and the new wsdl stuff to a separate + CVS module; updated the makefile to reflect it + +2005-11-24 Gaetano Giunta + + * modified php_xmlrpc_decode() to work on xmlrpcmessages too, besides + xmlrpcvals. To achieve this, added a new method: xmlrpcmsg::kindOf() + +2005-11-22 Gaetano Giunta + + * released as 2.0 RC2 + +2005-11-21 Gaetano Giunta + + * xmlrpc.inc: fix warnings about references for PHP 4.1.X + + * Whitespace cleanup on all the lib + +2005-11-16 Gaetano Giunta + + * xmlrpc.inc: rewritten xmlrpc_encode_entitites adding two extra parameters + that specify input and output charset encodings. This corrects the bug that + prevented native UTF-8 strings to be correctly serialized (to have them + encoded the user must set $xmlrpc_internalencoing appropriately). + + * xmlrpc.inc: added new method xmlrpcmsg::parseResponseHeaders(), refactoring + parseResponse(). This makes the code more modular and eases subclassing. + + * xmlrpc.inc: set cookies and http headers to xmlrpcresp objs even when calls + to send() do not complete correctly + + * added new file: jsonrpcs.inc, to accomodate server jsonrpc objects in the future + + * jsonrpc.inc: slow progress... + +2005-11-10 Gaetano Giunta + + * xmlrpc.inc: fixed the xmlrpc_client send and sendpayloadhttps methods + to fix errors in calling https servers; + added a new xmlrpc_client->setkey method to allow usage of client-side ssl + certs in recent php builds; + added to xmlrpcresp objects a content_type var, to be used in HTTP headers + + * xmlrpcs.inc: separate generation of content-type http header and xml prologue + from the service() method, to ease subclassing + +2005-11-03 Gaetano Giunta + + * xmlrpc.inc: moved the 'text/xml' mimetype string as class var of the xmlrpcmsg + object instead of having it cabled into xmlrpc_client->send(): this allows to + create subclasses of xmlrpcmsg that use a different mimetype + + * jsonrpc.inc: added a new file, with an extremely experimental set of classes, + designed to implement a json-rpc client and server, taking advantage of the + existing xml-rpc infrastructure + +2005-10-28 Gaetano Giunta + + * xmlrpc.inc: changed constructor method for xmlrpcresp, making it smarter in + case user does not declare the type of value it is passing to it; + minor changes in serialization of xmlrpcresp with error codes, so that it + utputs LF instead of CRLF on windows boxes after an FTP transfer of the code, too + +2005-10-26 Gaetano Giunta + + * xmlrpc.inc: added a new var of class xmlrpc_client, indicating what kind of + object will be stored in the value() of xmlrpcresp's gotten from the send() + method: xmlrpxc objects, plain php variables or raw xml. This allow the coder + to make use of xmlrpc_decode for better performances if he wishes so. + Modified creator of xmlrpcresp class to allow it to distinguish between being + created out of raw xml or a plain php string (in the former case, serialization + is still possible, opening a new world of opportunity for server-side programming: + the php function implementing a web service has to provide the xml for the + return value on its own). + Modified xmlrpc_client::multicall() to suit; also added a new parameter which + allows calls to multicall without automatic fallback to many-calls in case of + error (speeding up the process of doing a failed multicall() call quite a bit) + Fixed two bugs in guess_encoding. + Audited all regexps and fixed some. + xmlrpc_client::send() does not call xmlrpcmsg::parseresponsefile() anymore. + Shuffled parseresponse() a little bit + + * testsuite.php: added a new testcase for the modifications to multicall(): + now we test the case where xmlrpc_client returns php values, too + +2005-10-24 Gaetano Giunta + + * xmlrpc.inc: fixed guess_encoding() to always return uppercase chars + + * added new file: benchmark.php. It contains a few tests used to evaluate + speed of the lib in common use cases + + * added file parse_args.php, containing common code for benchmark and + testsuite, and modified testsuite.php accordingly + + * modified makefile adding new files + + * testsuite.php: added a couple of new test cases; fixed one warning + emitted in php 5 E_STRICT mode + +2005-10-20 Gaetano Giunta + + * xmlrpc.inc: modify 3d param of ParseResponse(), allowing the function to + return the raw xml received as value of the xmlrpcresponse object. + This allows eg. to have epi-xmlrpc decode the xml for faster execution. + +2005-10-09 Gaetano Giunta + + * xmlrpc.inc: fixed error that prevented usage of HTTPS (the client + always determined that ssl support was not present) + +2005-10-03 Gaetano Giunta + + * xmlrpc.inc, xmlrpcs.inc: revert direction of stack growth during xml + parsing for faster execution time; add support for detecting charset + encoding of received xml; add support for cookies; better parsing of + javadoc when building stub code in wrap_php_function; add a lot of + javadoc comments everywhere; rewrite most error messages + + * testsuite.php: add many tests for newly introduced features + + * server.php: add a couple of new functions to support debugging new + features + + * debugger: add switches to enable all the latest lib features; minor + improvements to layout + + * synch included phpunit with latest PEAR release + + * reorganize files included in the distribution in a new hierarchy of folders + + * bump revision number to 2.0RC1 and release + +2005-8-14 Miles Lott + + * xmlrpc.inc, xmlrpcs.inc: Remove all use of eval() to avoid potential + security hole. + + * As of this release we are no longer php3-compatible. + +2005-8-10 Miles Lott + + * xmlrpc.inc, xmlrpcs.inc: Switched to using $GLOBALS instead of calling + global $varname + +2005-07-22 Miles Lott + + * Removed: bug_* files + +2005-07-14 Gaetano Giunta + + * debugger: added a workaround to disable using the debugger for attacking + older versions of the lib + + * testsuite.php: added code to test wrap_xmlrpc_method; + use different wording for failed tests + + * xmlrpcs.inc: change for() with foreach() in system.* methods implementations; + remove a possible cause of php warning; + + * xmlrpc.inc: let wrap_php_function and wrap_xmlrpc_method find suitable + function names if default function names are already in use; + correct wrap_xmlrpc_method to not set http protocol to 1.0 when not asked to; + detect curl compiles without SSL + +2005-07-14 Gaetano Giunta + + * xmlrpc.inc: more auto-fix of xmlrpc_client path: '' -> '/'; + change to the method used for detecting failed evals (php 4.0.x compatibility); + complete rework of return-by-ref functions to comply with php 4.4.0 + + * xmlrpcs.inc: change to the method used for detecting failed evals (php 4.0.x + compatibility) + + * testsuite.php: major rewrite of the multi- tests, to give better feedback on + number of failed tests; + flush html page title to screen before starting tests; + +2005-07-13 Gaetano Giunta + + * xmlrpc.inc: let xmlrpcmsg creator be forgiving of target paths that miss the + starting '/' char; + completely reworked assign-by-ref to be compliant with php 4.4.0 stricter + warnings + + * testsuite.php: added ability to be run from cli: (really dumb) separation of + html and plain text outputs + parsing of argv parameters + +2005-07-12 Gaetano Giunta + + * xmlrpc.inc: compatibility fixes with PHP versions 4.0.x (and remove some for + PHP 3) + + * xmlrpcs.inc: compatibility fixes for PHP 4.0.x versions + + * testsuite.php: better support for running with php versions 4.0.x; + do not generate runtime errors but finish tests anyway if some calls to + localhost fail; + correctly detect a localhost port different from 80 for running tests against + +2005-07-11 Gaetano Giunta + + * xmlrpc.inc: preliminary building of method signature and docs in + wrap_php_function; + fix a bug in extracting function description from javadoc block in + wrap_php_function; + small fix for better compatibility with php < 4.2.0 + + * added compat subdir with extra code, taken form PEAR package Compat, to let + the lib run fine with php 4 versions < 4.1 + +2005-07-10 Gaetano Giunta + + * xmlrpc.inc: some nazi whitespace corrections; + declared global $xmlrpcBoolean too (was the only one missing); + used @eval inside getval() to have less path disclosure security reports filed + in the future; + added new global var: $xmlrpcValue, to be used in server dispatch maps as + placeholder for a param which can be of any kind; + big chunks (but still incomplete) of javadoc parsing in wrap_php_function + + changed type of return val - now it is the complete array to be put in the + dispatch map + + * xmlrpcs.inc: let previous error handler be called by server to handle errors + even if in debug level 3; + default to compress responses if zlib installed; + added a new val useful for only checking number (not type) of params in method + calls; + let user use object methods in dispatch map using the + array($obj, 'fmethodname') format + + * server.php: Added code called by testsuite.php to exercise registration of + object methods as xmlrpc methods and auto-registration of php functions as xmlrpc + methods + + * testsuite.php: added tests to exercice server registering object methods as + xmlrpc methods and automatic registration of php functions as server methods; + added a hint to enable debug if some test goes wrong; + renamed https test for better clarity + +2005-07-07 Gaetano Giunta + + * xmlrpc.inc: added function to be used for 'guestimating' charset encoding of + received xml (not activated yet) + + * server.php: Let server compress content by default if user asks so: it allows + testsuite to check for compressed responses + + * testsuite.php: added suite of tests for compressed responses; test CURL + (http1.1) with all possible compression combinations too + +2005-07-06 Gaetano Giunta + + * xmlrpc.inc: Enable setting usage of keepalives on/off (for CURL cases); + implement compression of xmlrpc requests; enable new syntax of xmlrpclient + constructor: 1 - allow preferred http method to be set at creation time, + 2 - allow user to insert a single complete URL as only parameter and parse it; + try to detect if curl is present whether it has been compiled w. zlib to enable + automatically the reception of compressed responses + + * xmlrpcs.inc: do not add into logs the content of the request, if it was + received gzipped/deflated, to avoid breaking the xml sent back as response + (NB: might be investigated further: is the problem caused by windows chars in + the range 128-160 ?) + + * testsuite.php: run all localhost tests 2 more times, to stress request + compression; + run all localhost tests in a row using keepalives, to test keepalive + functionality + +2005-07-05 Gaetano Giunta + + * xmlrpc.inc: let CURL pass back to caller function the complete PHP headers + as it did before: it enables better logging / debugging of communication; + small change to the way CURL declares its ability to receive compressed + messages (fix for the case where zlib is compiled in PHP but not in curl); + added Keep-alive (ON BY DEFAULT) for http 1.1 and https messages (had to modify + a lot of functions for that); + always make sure a 'Connection: close' header is sent with curl connections if + keep-alive is not wanted + + * phpunit.php: switched to PEAR PHPUnit (rel 1.2.3), since it is maintained a + lot more than the old version we were using + + * added new folder with code of phpunit classes + + * testsuite.php: added a new run of tests to check for compliance of client + when using http 1.1; + switched to PEAR PHPUnit classes; + divided test for client ability to do multicall() into 2 separate tests + +2005-06-30 Gaetano Giunta + + tagged and released version 1.1.1, backporting security fixes from HEAD + +2005-06-28 Gaetano Giunta + + * xmlrpcs.inc: fix changes introuced yesterday in a rush; + do not list system.* methods for a server that has them explicitly disabled + + * bug_inject.xml: new test case used to check for code injection vulnerability + + * testsuite.php: added a test case for zero parameters method calls; + added two test cases for recently found code injection vulnerabilities + +2005-06-27 Gaetano Giunta + + * xmlrpc.inc: (tentative) fix for security problem reported by + security@gulftech.org: we were not properly php-escaping xml received for + BASE64 and NAME tags; + some more patching related to junk received in xml messages/responses: if the + PHP code built from the parsed xml is broken, catch any generated errors + without echoing it to screen but take note of the error and propagate to user + code + + * xmlrpcs.inc: some more patching related to junk received in xml messages/ + responses: if the PHP code built from the parsed xml is broken, catch any + generated errors without echoing it to screen but take note of the error and + propagate to user code + +2005-06-24 Gaetano Giunta + + * xmlrpc.inc: fixed php_xmlrpc_encode detection of php arrays (again!); + removed from wrap_php_function the part about setting a custom error handler + (it can be activated using the more general $server->setdebug(3) anyway) + + * xmlrpcs.inc: added to server the capability to trap all processing errors + during execution of user functions and add them to debug info inside responses; + return a (new) xmlrpcerr response instead of raising some obscure php execution + error if there is an undefined function in the dispatch map + + * testsuite.php: Added new testcases for recently implemented stuff + +2005-06-23 Gaetano Giunta + + * xmlrpc.inc: added new method: xmlrpcval->structmemexists, to check for + presence of a wanted struct member without having to loop through all members; + fix wrap_php_functions: correctly return false for php internal functions, + whose param list is unknown; + let addscalar fail as it should if called on struct vals; + fix addstruct: do not fail when called for adding stuff to initialized structs; + removed a warning generated when calling addscalar with inexistent type; + massive code review for speed: replaced each() loops with foreach(), removed + lots of useless assignments and duplications of data; + added 'http11' as valid method param for xmlrpclient->send: makes use of curl + for sending http 1.1 requests; + changed a couple '=' into '=&' where objects are returned; + fixed wrap_php_function() to better detect php errors while processing wrapped + function + + * xmlrpcs.inc: Fix php warnings generated when clients requested method + signature / description for a method that had none in its dispatch map; + turned server->debug into an integer value that will change the amount of + logging going as comments into xmlrpc responses + + * server.php: set default server debug level to 2 + + * testsuite.php: removed calls to deleted functions (xmlrpc_encode, + xmlrpc_decode); + added html page title describing target servers used for tests; + added an assign-by-ref + + * phpunit.php: Do not consider as failures PHP 5 E_STRICT errors (arbitrary + choice, but lib is targeted at PHP 4) + +2005-06-22 Gaetano Giunta + + * xmlrpc.inc: removed lottsa old code that had been left in commented + + * xmlrpc.inc: fixed setting of proxy port + + * xmlrpc.inc: removed one warning when trying to decompress junk sent as + deflated response + + * xmlrpc.inc: changed the error messages (but not the code) that will be found + in xmlrpcresponses when there are socket errors, to differentiate from HTTP + errors + + * xmlrpc.inc: refactored xmlrpcclient->sendpayloadHTTPS: now it calls a new + method (sendpayloadCURL) that could be used also for generating HTTP 1.1 + requests + + * xmlrpc.inc: added two new methods: wrap_php_function and wrap_xmlrpc_method: + designed to let the lazy programmer automagically convert php functions to + xmlrpc methods and vice versa. Details are in the code + + * debugger/*: added initial revision of a 'universal xmlrpc debugger' + +2005-06-20 Gaetano Giunta + + * xmlrpc.inc: replace usage of 'echo' with error_log when errors arise + in manipulation of xmlrpcval objects + + * xmlrpc.inc: replaced
with
in dump function + + * xmlrpc.inc: added method structsize to xmlrpcval class (alias for arraysize) + + * xmlrpc.inc: addarray() now will add extra members to an xmlrpcval object + of array type; addstruct() can be used to add members to an xmlrpcval object + of struct type + + * xmlrpcs.inc: Added member allow_system_funcs to server: controls whether the + server accepts or not calls to system.* functions + +2005-05-10 Gaetano Giunta + + * xmlrpc.inc: fix regression in php_xmlrpc_encode when encoding php hashes; + fix decompression of gzip/deflated xmlrpc responses; + set user agent string correctly in SSL mode (was forgetting lib name); + add allowed encoding http headers in requests; + do not pass http headers back from curl to parseresponse, to avoid re-decoding + compressed xml or http 100 headers + + * xmlrpcs.inc: added method setDebug; + renamed compress_output to compress_response; + do not try to set http headers if they have already been sent, because trying + to do so will raise a PHP error, and if headers have been sent something has + gone wrong already (shall we send a meaningful error response instead?) + +2005-05-08 Gaetano Giunta + + * xmlrpcs.inc, xmlrpcs.inc: reverted to usage of '=& new' for better + performance on (some) php4 installs. + NB: PHP 3 compatibility is deprecated from now on! + + * xmlrpc.inc: decode xmlrpc boolean type to native php boolean + + * xmlrpcs.inc, xmlrpcs.inc: switched $_xh[$parser] to $_xh, since indexing + an array by object will give a warning in php 5 (and we were resetting the + array of _xh elements on every call anyway) + + * xmlrpc.inc: commented unused code used originally for escaping content + + * xmlrpc.inc: commented deprecated methods xmlrpc_encode and xmlrpc_decode + + * xmlrpc.inc: php_xmlrpc_encode: encode integer-indexed php arrays as xmlrpc + arrays instead of structs; if object given to encode is an xmlrpcval return it + instead of reencoding (makes easier calling encode on an array of xmlrpcvals) + + * xmlrpcs.inc: added $debug field to server class; if false will prevent + the server from echoing debug info back to the client as xml comment + + * xmlrpcs.inc: let the server add to the debug messages the complete request + payload received and (if php installed as apache module) http headers, so that + the client in debug mode can echo a complete fingerprint of the communication + + * xmlrpcs.inc: changed API of ParseRequest method: now it cannot be called + without a 'data' parameter; added 2nd parameter (http encoding); changed the + call to this method from inside service() method + + * xmlrpc.inc, xmlrpcs.inc: enable both server and client to parse compressed xml + (if php is compiled with zlib); client should also be able to decode chunked + http encoding + + * xmlrpc.inc: add support for proxies (only basic auth supported); default port + is 8080 (if left unspecified) + + * xmlrpc.inc: use lowercase for names of http headers received (makes using + them much simpler, since servers can use any upper/lowercase combination) + + * xmlrpc.inc: bumped version number to '2.0 beta' + +2005-05-08 Gaetano Giunta + + * release of version 1.1 + +2005-04-24 Gaetano Giunta + + * xmlrpcs.inc: removed charset declaration from xml prologue of responses, + since we are now escaping all non-ascii chars in an encoding-independent way + + * bug_http.xml: modified to exercise some extra functonality of the lib + (it should now be failed by the current PEAR implementation of the lib) + + * xmlrpc.inc: bumped up rev. number to 1.1 + + * doc/xmlrpc_php.xml, doc/announce1_1.txt: documentation updates + + * Makefile: updated to reflect new xml doc source, modified filelist + +2005-04-17 Gaetano Giunta + + * client.php, agesort.php, introspect.php, introspect_demo.php, + which.php, test.pl, test.py: use as default target the server.php page hosted + on phpxmlrpc.sf.net + + * server.php: fix for register_globals off; refer to docs on phpxmlrpc.sf.net + +2005-04-15 Miles Lott + + code formatting and comments + +2005-04-03 Gaetano Giunta + + * xmlrpc.inc: make use of global var $xmlrpcName in building User_Agent HTTP + header (in conjunction with $xmlrpcVersion) + + * agesort.php, client.php, comment.php, dicuss.php, mail.php, server.php, + which.php: various janitorial fixes + + always html escape content received from xmlrpc server or from user input + + make the scripts run fine with register_globals off an register_long_arrays off + + always use the functions php_xmlrpc_en(de)code, even if the EPI extension + is not installed + + in mail.php, allow user to see script source even if support for .phps files + is not configured in the local web server + + * testsuite.php: better detection of local webserver hostname for running tests + against (if the user did not supply a webserver name) + +2005-03-21 Gaetano Giunta + + * xmlrpcs.inc: revert to a PHP3 compatible script (change '=& new' to '= new') + + * xmlrpc.inc: revert to a PHP3 compatible script (lottsa fixes) + + * testsuite.php: default to using local server as test target if no user + provided values are available instead of heddley.com server + + * testsuite.php: play nice to PHP3 in retrieving user-passed values + + * testsuite.php: fix constructor method name for a type of tests + + * phpunit.php: fix all cases of call-time-pass-by-ref + + * phpunit.php: rename Exception class to _Exception if the script is run with + PHP 5 (exception is a reserverd word) + +2005-03-19 Gaetano Giunta + + * xmlrpc.inc: fixed bug in new http header parsing code in case there is + no correct separator between response headers and body + + * xmlrpc.inc: added recognizing and stripping of HTTP/1.1 100 response headers + + * xmlrpc.inc: strip extra whitespace from response body, as well as any junk + that comes after the last tag. It allows the server code to + be put on public providers that add e.g. javascript advertising to served pages + + * xmlrpc.inc: removed unused parts of code, trailing whitespace + + * xmlrpc.inc: fix possible bug (?) in xmlrpc_ee for BOOLEAN values: true was + being handled differently than false + + * testsuite.php: added a new file-based test to stress the response parsing + modifications recently introduced; enabled debugging for file based tests + +2005-03-15 Gaetano Giunta + + * xmlrpc.inc: fixed missing declaration of global vars in xmlrpc_dh, + sendpayloadhttps and sendpayloadhttp10 + + * xmlrpc.inc: changed error message for invalid responses: 'enable debugging' + is more clear that 'enabling debugging' (the user is being encouraged to do it) + + * xmlrpc.inc: rewrote HTTP response header parsing. It should be more tolerant + of invalid headers, give more accurate error messages and be marginally faster, + too. + + * xmlrpc.inc: cosmetic whitespace fixes and remove useless one-liners + + * xmlrpc.inc: build a shorter PHP command line to be evaluated for rebuilding + values from parsed xml: use '$val =& nex xmlrpcval("value")' for string values + instead of '$val =& nex xmlrpcval("value", $xmlrpcString)' + + * xmlrpc.inc: fix change introduced 2005/01/30 moving call to curl_close() + too early: it did not work on error situations + + * testsuite.php: fix name of testAddingTest method, renamed testErrosString + into testErrorString and removed useless warning for register_globals=off case + +2005-02-27 Gaetano Giunta + + * xmlrpc.inc: do not echo XML parsing error to screen (it is already dumped + into error log) + + * xmlrpc.inc: set hdrs field into response object in case of XML parsing error + (uniform behaviour with other responses) + +2005-02-26 Gaetano Giunta + + * xmlrpc.inc: use global var $xmlrpcVersion as number for user agent string + + * xmlrpcs.inc: eliminate server side PHP warning and give back to caller + a better error msg in case the called method exists but no signature matches + the number of parameters + +2005-02-20 Gaetano Giunta + + * xmlrpc.inc: accept a + sign in front of floats / integers, since the spec + clearly mentions it + + * xmlrpc.inc, xmlrpcs.inc: renamed function XmlEntities to xmlrpc_encode_entitites, + to avoid using the same name as an array already defined + + * xmlrpc.inc: fix bug introduced with escaping of UTF8 chars in xmlrpc error + responses: correct behaviour is to escape chars inside serialize(), not when + calling the xmlrpcresp creator + + * testsuite.php: made test suite more friendly to modern PHP configs, allowing + register_globals to be off and to set in the URL all testing parameters; + added tests for newly introduced fixes; renamed existing tests acording to the + docs inside phpunit.php (e.g. no subclass of TestCase should have a name + starting with test...) + +2005-02-19 Gaetano Giunta + + * xmlrpc.inc: accept patch 683153 by mah0: if timeout is set, allow all socket + operations to timeout at the given time, not only the socket connection + +2005-02-13 Gaetano Giunta + + * xmlrpc.inc: be tolerant to double values received in exponential notation: + even though the spec forbids their usage PHP is fine with them + + * xmlrpc.inc: fix bug: new xmlrpcval('-1') was creating an empty value instead + of a string value! + + * xmlrpc.inc, xmlrpcs.inc: fix the payload encoding changes introduced by + Andres Salomon on 2004-03-17: sending named html entities inside an xml chunk + makes it invalid, and thus renders the lib absolutely non-interoperable with + any other xmlrpc implementation; moreover the current implementation only ever + worked for non-ascii requests, while breaking client-parsing of responses + containing non-ascii chars. + The principle of using entities is preserved though, because it allows the + client to send correct xml regardless of php internal charset encoding vs. + xml request charset encoding, but using 'character references' instead. + + * xmlrpc.inc: encode (non-ascii) chars into charset entities also for error + strings + + * xmlrpcs.inc: encode (non-ascii) chars into charset entities also for debug + messages + + * xmlrpcs.inc: added 'Accept-Charset' header in http request to let the server + know what kind of charset encoding we do expect to be used for responses + + * xmlrpc.inc, xmlrpcs.inc: explicitly tell the xml parser what charset the + application expects to receive content in (notably strings). A new variable, + $xmlrpc_internalencoding, (defaulting to ISO-8859-1) defines what charset the + parser will use for passing back string xmlrpcvals to the PHP application + (both server-side and client-side). + This allows transparent usage of e.g. UTF-8 for encoding xml messages between + server and client and ISO-8859-1 for internal string handling. + ISO-8859-1 is, AFAIK, PHP internal encoding for all installs except + mbstring-enabled ones. + +2005-02-12 Gaetano Giunta + + * xmlrpcs.inc: use '$var =& new(' construct to assign objects: on older versions + of PHP objects are first built then copied over if the ampersand is omitted. + Using it should make the code a little bit faster... + + * doc/xmlrpc.php: update lib version number, release date in preparation for + next release + + * makefile: update lib version number in preparation for next release + + * xmlrpc.inc: split up parsing of xmlrpc INT and DOUBLE values. This allows + finer-grained control over valid values: now the '.' char is not allowed + any more inside int values. + + * xmlrpc.inc: fix for bug #560303: ints and doubles starting with '0' chars are + no more parsed as octal values + +2005-01-30 Gaetano Giunta + + * xmlrpc.inc: Modifed last change by Miles: the functions php_xmlrpc_encode + and php_xmlrpc_decode are now always defined, regardless of the existence of + XMLRPC-EPI. This allows users to start using these functions as the 'default' + functions, and pave the way for future deprecation of xmlrpc_encode/encode + while maintaining a stable API. + + * xmlrpc.inc: use '$var =& new(' construct to assign objects: on older versions + of PHP objects are first built then copied over if the ampersand is omitted. + Using it should make the code a little bit faster... + + * xmlrpc.inc: close curl connection as soon as possible for https requests: + it could save some memory / resources. + + * xmlrpc.inc: added some extra info in the PHP error log message generated + when an invalid xmlrpc integer/float value is encountered and we try to + deserialize it. + + * xmlrpc.inc: added @ char before fsockopen to avoid echoing useless warnings + when connection to server fails; added the same to avoid echoing warnings when + deserializing data of an unknown type + + * xmlrpc.inc: reset the _xh array on each xmlrpc call: otherwise a new array + member is created for each consecutive call and never destroyed, thus making it + impossible to build an xmlrpc-client daemon beacuse of memory leaking. + + * xmlrpc.inc: declare global the variables that are used as 'constants', + so that xmlrpc.inc will work even if it is included from within a function + +2004-12-27 Miles Lott + * xmlrpc.inc: A new constant, XMLRPC_EPI_ENABLED, is defined depending on + the existence of the function, xmlrpc_decode. This function will exist in + PHP if the extension, XMLRPC-EPI (http://xmlrpc-epi.sourceforge.net), is + loaded. It defines the functions xmlrpc_encode and xmlrpc_decode, which + will conflict with functions of the same name in xmlrpc.inc. If this + extension is loaded, we instead use the names php_xmlrpc_encode and + php_xmlrpc_decode. Please look at server.php, testsuite.php, etc., for + how this should be handled if using these functions. + +2003-04-17 Andres Salomon + * xmlrpc.inc: encode strings using htmlentities() instead of + htmlspecialchars(), and add xmlrpc_html_entity_xlate(). This + should fix longstanding issues with sending weird chars (from + non-USASCII codesets like UTF-8, ISO-8859-1, etc) that caused + the xml parser to choke. Multi-byte chars are now changed to + entities before sending, so that the xmlrpc server doesn't need + to know the encoding type of the POST data. + * xmlrpcs.inc: call xmlrpc_html_entity_xlate before parsing + request packet. The parser chokes on unknown entities (the + entities created by htmlentities() are exactly that; html + entities, not xml entities), so they must be converted from + name form (é) to numerical form (é). + +2003-01-12 Andres Salomon + + * released 1.0.99.2. + * Makefile: separate doc/Makefile a bit more from Makefile, + and add clean rules. + +2003-01-10 Andres Salomon + + * xmlrpc.inc: xmlrpcresp and parseResponse cleanups; variable + name renames ('xv' to 'val', for example), type checking, and + stricter default values. + * xmlrpc.inc: fix xmlrpcresp's faultcode; return -1 for FAULT + responses from the server whose faultcodes don't reflect any + errors. + +2003-01-08 Andres Salomon + + * xmlrpc.inc: rename $_xh[$parser]['ha'] to + $_xh[$parser]['headers']. + * xmlrpc.inc: fix bugs related to $_xh[$parser]['headers]; + some places treated this as an array, others as a scalar. + Treat unconditionally as an array. Also wrap header debugging + output in PRE tags. + +2002-12-17 Andres Salomon + + * released 1.0.99. + * Makefile: changed the tarball format/dist rule to a more + conventional form, as well as normal release updates. + * xmlrpc.inc: added setSSLVerifyPeer and setSSLVerifyHost; as + of curl 7.10, various certificate checks are done (by default). + The default for CURLOPT_SSL_VERIFYHOST is to ensure the common + name on the cert matches the provided hostname. This breaks a + lot of stuff, so allow users to override it. + * doc/xmlrpc_php.sgml: updated documentation accordingly. + +2002-09-06 Geoffrey T. Dairiki + + Add support for system.multicall() to both the client + and the server. + + * testsuite.php: Add new tests 'testServerMulticall', + and 'testClientMulticall'. + + * xmlrpc.inc: Added new error messages for system.multicall(). + * xmlrpcs.inc: Added new procedure call system.multicall(). + See http://www.xmlrpc.com/discuss/msgReader$1208 for details. + + * xmlrpc.inc: Added system.multicall functionality to + xmlrpc_client. xmlrpc_client::send can now take an array of + xmlrpcmsg's as an argument. In that case it will attempt + to execute the whole array of procure calls in a single + HTTP request using system.multicall(). (If that attempt fails, + then the calls will be excuted one at a time.) The return + value will be an array of xmlrpcresp's (or 0 upon transport + failure.) + +2001-11-29 Edd Dumbill + + * xmlrpc.inc: fixed problem with processing HTTP headers that + broke any payload with more than one consecutive newline in it. + also initialise the 'ac' array member to empty string at start. + * testsuite.php: added unit test to exercise above bug + * xmlrpcs.inc: fixed uninitialized variable $plist + +2001-09-25 Edd Dumbill + + * xmlrpc.inc: applied urgent security fixes as identified by Dan + Libby + +2001-08-27 Edd Dumbill + + * xmlrpc.inc: Merged in HTTPS support from Justin Miller, with a + few additions for better traceability of failure conditions. Added + small fix from Giancarlo Pinerolo. Bumped rev to 1.0. Changed + license to BSD license. + +2001-06-15 Edd Dumbill + + * xmlrpcs.inc: Added \r into return MIME headers for server class + +2001-04-25 Edd Dumbill + + * server.php: Added interop suite of methods. + +2001-04-24 Edd Dumbill + + * testsuite.php: added in test case for string handling bug. + + * xmlrpc.inc: merged in minor fixes from G Giunta to fix + noninitialization. Created new method, getval(), which includes + experimental support for recreating nested arrays, from Giunta and + Sofer. Fixed string handling bug where characters after + but before weren't ignored. Added in support for native + boolean type into xmlrpc_encode (Giunta). + + * xmlrpcs.inc: updated copyright notice + +2001-01-15 Edd Dumbill + + * xmlrpc.inc: fixed bug with creation of booleans. Put checks in + to ensure that numbers were really numeric. Fixed bug with + non-escaping of dollar signs in strings. + + * testsuite.php: created test suite. + +2000-08-26 Edd Dumbill + + * xmlrpcs.inc: added xmlrpc_debugmsg() function which outputs + debug information in comments inside the return payload XML + + * xmlrpc.inc: merged in some changes from Dan Libby which fix up + whitespace handling. + + * xmlrpcs.inc: added Content-length header on response (bug from + Jan Varga . This means you can no longer print + during processing + + * xmlrpc.inc: changed ereg_replace to str_replace in several + places (thanks to Dan Libby for this). + + * xmlrpc.inc: added xmlrpc_encode() and xmlrpc_decode() from Dan + Libby--these helper routines make it easier to work in native PHP + data structures. + +2000-07-21 Edd Dumbill + + * xmlrpc.inc: added xmlrpc_client::setCredentials method to pass + in authorization information, and modified sendPayload* methods to + send this OK. Thanks to Grant Rauscher for the impetus to do this. + Also, made the client send empty if there are no + parameters set by the user. + + * doc/xmlrpc_php.sgml: updated documentation to reflect recent + changes + + +2000-07-18 Edd Dumbill + + * server.php: added examples.invertBooleans method to server as a + useful test method for boolean values. + + * xmlrpc.inc: rearranged the way booleans are handled to fix + outstanding problems. Fixed calling addScalar() on arrays so it + works. Finally fixed backslashification issues to remove the + problem will dollar signs disappearing. + + * booltest.php: really fixed booleans this time. + +2000-06-03 Edd Dumbill + + * xmlrpcs.inc: made signature verification more useful - now + returns what it found was wrong + + * xmlrpc.inc: fixed bug with decoding dateTimes. Also fixed a bug + which meant a PHP syntax error happened when attempting to receive + empty arrays or structs. Also fixed bug with booleans always being + interpreted as 'true'. + + * server.php: Added validator1 suite of tests to test against + validator.xmlrpc.com + + +2000-05-06 Edd Dumbill + + * released 1.0b6 + + * added test.pl and test.py, Perl and Python scripts that exercise + server.php somewhat (but not a lot) + + * added extra fault condition for a non 200 OK response from the + remote server. + + * added iso8601_encode() and iso8601_decode() to give some support + for passing dates around. They translate to and from UNIX + timestamps. Updated documentation accordingly. + + * fixed string backslashification -- was previously a little + overzealous! new behavior is '\' --> '\\' and '"' --> + '\"'. Everything else gets left alone. + +2000-04-12 Edd Dumbill + + * updated and bugfixed the documentation + + * fixed base 64 encoding to only happen at serialize() time, + rather than when a base64 value is created. This fixes the double + encoding bug reported by Nicolay Mausz + . The same approach ought to be taken with + encoding XML entities in the data - this is a TODO. + + * integrated further code from Peter Kocks: used his new code for + send(), adding a second, optional, parameter which is a timeout + parameter to fsockopen() + +1999-10-11 Edd Dumbill + + * added bug fixes from Peter Kocks + +1999-10-10 Edd Dumbill + + * updated the documentation + +1999-10-08 Edd Dumbill + + * added system.* methods and dispatcher, plus documentation + + * fixed bug which meant request::getNumParams was returning an + incorrect value + + * added signatures into the dispatch map. This BREAKS + COMPATIBILITY with previous releases of this code + +1999-08-18 Edd Dumbill + + * made entity encoding and decoding transparent now on string + passing. + + * de-globalised the globals in the parse routines, using an + associative array to hold all parser state $_xh + + * changed default input encoding to be UTF-8 to match expectation + + * separated out parseResponse into parseResponse and + parseResponseFile so that you can call parseResponse on a string + if you have one handy + +1999-07-20 Edd Dumbill + + * Moved documentation into Docbook format + +1999-07-19 Edd Dumbill + + * Added an echo server into server.php and echotest.php, a client + which will exercise the new echo routine. + + * Added test for no valid value returned: in this case will now + throw the error "invalid payload" + + * Added serialize() method to xmlrpcresp to return a string with + the response serialized as XML + + * Added automatic encoding and decoding for base64 types + + * Added setDebug() method to client to enable HTML output + debugging in the client + +1999-07-08 Edd Dumbill + + * Improved XML parse error reporting on the server side to send it + back in a faultCode packet. expat errors now begin at 100 + +1999-07-07 Edd Dumbill + + * Changed the structmem and arraymem methods of xmlrpcval to always + return xmlrpc vals whether they referred to scalars or complex + types. + + * Added the server class and demonstrations + + * Fixed bugs in the XML parsing and reworked it diff --git a/INSTALL b/INSTALL index 2a39bdf..b5eeddf 100644 --- a/INSTALL +++ b/INSTALL @@ -1,38 +1,38 @@ -XMLRPC for PHP - -Requirements ------------- - -The following requirements should be met prior to using 'XMLRPC for PHP': -. PHP 5.1.0 or later -. the php "curl" extension is needed if you wish to use SSL or HTTP 1.1 to - communicate with remote servers - -The php "xmlrpc" native extension is not required, but if it is installed, -there will be no interference with the operation of this library. - - -Installation instructions -------------------------- - -Installation of the library is quite easy: - -1. copy the contents of the lib/ folder to any location required by your - application (it can be inside the web server root or not). - -2. make sure your app can include those files. This can be achieved by setting - the PHP include path, either in the php.ini file or directly in the php code - of your application, using the 'set_include_path' function - - -Example of php code allowing an application to import the library: - -set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/phpxmlrpc/lib/'); -require_once( 'xmlrpc.inc' ); -require_once( 'xmlrpcs.inc' ); -require_once( 'xmlrpc_wrappers.inc' ); - - -Please note that usage of the 'make' command for installation of the library is -not recommended, as it will generally involve editing of the makefile for a -succesfull run. +XMLRPC for PHP + +Requirements +------------ + +The following requirements should be met prior to using 'XMLRPC for PHP': +. PHP 5.1.0 or later +. the php "curl" extension is needed if you wish to use SSL or HTTP 1.1 to + communicate with remote servers + +The php "xmlrpc" native extension is not required, but if it is installed, +there will be no interference with the operation of this library. + + +Installation instructions +------------------------- + +Installation of the library is quite easy: + +1. copy the contents of the lib/ folder to any location required by your + application (it can be inside the web server root or not). + +2. make sure your app can include those files. This can be achieved by setting + the PHP include path, either in the php.ini file or directly in the php code + of your application, using the 'set_include_path' function + + +Example of php code allowing an application to import the library: + +set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/phpxmlrpc/lib/'); +require_once( 'xmlrpc.inc' ); +require_once( 'xmlrpcs.inc' ); +require_once( 'xmlrpc_wrappers.inc' ); + + +Please note that usage of the 'make' command for installation of the library is +not recommended, as it will generally involve editing of the makefile for a +succesfull run. diff --git a/NEWS b/NEWS index 195b6a3..5d36f47 100644 --- a/NEWS +++ b/NEWS @@ -1,353 +1,353 @@ -XML-RPC for PHP version 3.0.1 - 201X/Y/Z - -Taking baby steps to modern-world php, this release is now tested using Travis ( https://travis-ci.org/ ). - -Improved: no need to call anymore $client->setSSLVerifyHost(2) to silence a curl warning when using https with recent curl builds - - -XML-RPC for PHP version 3.0.0 - 2014/6/15 - -This release corrects all bugs that have been reported and successfully reproduced since -version 3.0.0 beta. - -The requirements have increased to php 5.1.0 - which is still way older than what you should be running for any serious purpose, really. - -It also is the first release to be installable via composer. - -See the Changelog file or the pdf docs for a complete list of changes. - - -XML-RPC for PHP version 3.0.0 beta - 2009/09/05 - -This is the first release of the library to only support PHP 5. -Some legacy code has been removed, and support for features such as exceptions -and dateTime objects introduced. - -The "beta" tag is meant to indicate the fact that the refactoring has been more widespread -than in precedent releases and that more changes are likely to be introduced with time - -the library is still considered to be production quality. - -* improved: removed all usage of php functions deprecated in php 5.3, usage of assign-by-ref when creating new objects etc... -* improved: add support for the tag used by the apache library, both in input and output -* improved: add support for dateTime objects in both in php_xmlrpc_encode and as parameter for constructor of xmlrpcval -* improved: add support for timestamps as parameter for constructor of xmlrpcval -* improved: add option 'dates_as_objects' to php_xmlrpc_decode to return dateTime objects for xmlrpc datetimes -* improved: add new method SetCurlOptions to xmrlpc_client to allow extra flexibility in tweaking http config, such as explicitly binding to an ip address -* improved: add new method SetUserAgent to xmrlpc_client to to allow having different user-agent http headers -* improved: add a new member variable in server class to allow fine-tuning of the encoding of returned values when the server is in 'phpvals' mode -* improved: allow servers in 'xmlrpcvals' mode to also register plain php functions by defining them in the dispatch map with an added option -* improved: catch exceptions thrown during execution of php functions exposed as methods by the server -* fixed: bad encoding if same object is encoded twice using php_xmlrpc_encode - - -XML-RPC for PHP version 2.2.2 - 2009/03/16 - -This release corrects all bugs that have been reported and sucesfully reproduced since -version 2.2.1. -Regardless of the intimidating message about dropping PHP 4 support, it still does -support that ancient, broken and insecure platform. - - -* fixed: php warning when receiving 'false' in a bool value -* fixed: improve robustness of the debugger when parsing weird results from non-compliant servers -* fixed: format floating point values using the correct decimal separator even when php locale is set to one that uses comma -* fixed: use feof() to test if socket connections are to be closed instead of the number of bytes read (rare bug when communicating with some servers) -* fixed: be more tolerant in detection of charset in http headers -* fixed: fix encoding of UTF8 chars outside of the BMP plane -* fixed: fix detection of zlib.output_compression -* improved: allow the add_to_map server method to add docs for single params too -* improved: added the possibility to wrap for exposure as xmlrpc methods plain php class methods, object methods and even whole classes - - -XML-RPC for PHP version 2.2.1 - 2008/03/06 - -This release corrects all bugs that have been reported and sucesfully reproduced. -It is the last release of the library that will support PHP 4. - -* fixed: work around bug in php 5.2.2 which broke support of HTTP_RAW_POST_DATA -* fixed: is_dir parameter of setCaCertificate() method is reversed -* fixed: a php warning in xmlrpc_client creator method -* fixed: parsing of '1e+1' as valid float -* fixed: allow errorlevel 3 to work when prev. error handler was a static method -* fixed: usage of client::setcookie() for multiple cookies in non-ssl mode -* improved: support for CP1252 charset is not part or the library but almost possible -* improved: more info when curl is enabled and debug mode is on - - -XML-RPC for PHP version 2.2 - 2007/02/25 - -This release corrects a couple of bugs and adds a few minor features. - -* fixed: debugger errors on php installs with magic_quotes_gpc on -* fixed: support for https connections via proxy -* fixed: wrap_xmlrpc_method() generated code failed to properly encode php objects -* improved: slightly faster encoding of data which is internally UTF-8 -* improved: debugger always generates a 'null' id for jsonrpc if user omits it -* new: debugger can take advantage of a graphical value builder - (it has to be downloaded separately, as part of jsxmlrpc package) -* new: support for the xmlrpc extension -* new: server support for the system.getCapabilities xmlrpc extension -* new: wrap_xmlrpc_method() accepts two new options: debug and return_on_fault - - -XML-RPC for PHP version 2.1 - 2006/08/28 - -This release corrects quite a few bugs and adds some interesting new features. -There is a minor security enhancement and overall speedup too. - -It has been tested with PHP 4.0.5 up to 4.4.4 and 5.1.5. -Please note that 404pl1 is NOT supported, and has not been since 2.0. - -*** PLEASE READ CAREFULLY BELOW *** - -CHANGES THAT MIGHT AFFECT DEPLOYED APPLICATIONS: - -The wrap_php_function and wrap_xmlrpc_method functions have been moved out of -the base library file xmlrpc.inc into a file of their own: xmlrpc_wrappers.inc. -You will have to include() / require() it in your scripts if you have been using -those functions. - -For increased security, the automatic rebuilding of php object instances out of -received xmlrpc structs in wrap_xmlrpc_method() has been disabled (but it can be -optionally reenabled). - -The constructor of xmlrpcval() values has seen major changes, and it will not -throw a php warning anymore when invoked using an unknown xmlrpc type: the -error will only be written to php error log. Also new xmlrpcval('true', 'boolean') -is not supported anymore. - -MAJOR IMPROVEMENTS: - -The new function php_xmlrpc_decode_xml() will take the xml representation of -either an xmlrpc request, response or single value and return the corresponding -php-xmlrpc object instance. - -Both wrap_php_function() and wrap_xmlrpc_method() functions accept many more -options to fine tune their behaviour, including one to return the php code to -be saved and later used as standalone php script. - -A new function wrap_xmlrpc_server() has been added, to wrap all (or some) of the -methods exposed by a remote xmlrpc server into a php class. - -Lib internals have been modified to provide better support for grafting extra -functionality on top of it. Stay tuned for future releases of the EXTRAS package. - -Last but not least a new file has been added: verify_compat.php, to help users -diagnose the level of compliance of the current php install with the library. - -CHANGELOG IN DETAIL: - -* fixed bug 1311927: client not playing nice with some proxy/firewall on ports != 80 -* fixed bug 1334340: all ereg_ functions have been replaced with corresponding preg_ -* fixed bug: wrong handling of 'deflate' http encoding, both server and client side -* fixed bug: sending compressed responses when php output compression is enabled was not working -* fixed bug: addarray() and addstruct() where not returning 1 when adding data to already initialized values -* fixed bug: non-ascii chars used in struct element names where not being encoded correctly -* restored compatibility with php 4.0.5 (for those poor souls still stuck on it) -* server->service() now returns either the payload or xmlrpcresp instance -* server->add_to_map() now accepts methods with no param definitions -* added new function: php_xmlrpc_decode_xml() -* added new function: wrap_xmlrpc_server() -* major improvements and security enhancements to wrap_php_function() and wrap_xmlrpc_method() -* documentation for single parameters of exposed methods can be added to the dispatch map - (and turned into html docs in conjunction with a future release of the extras package) -* full response payload is saved into xmlrpcresp object for further debugging -* stricter parsing of incmoing xmlrpc messages: two more invalid cases are now detected - (double data element inside array and struct/array after scalar inside value element) -* debugger can now generate code that wraps a remote method into php function (works for jsonrpc, too) -* debugger has better support for being activated via a single GET call (for integration into other tools?) -* more logging of errors in a lot of situations -* javadoc documentation of lib files almost complete -* the usual amount of new testcases in the testsuite -* many performance tweaks and code cleanups -* added foundation for emulating the API of the xmlrpc extension (extras package needed) - - -XML-RPC for PHP version 2.0 - 2006/04/24 - -I'm pleased to announce XML-RPC for PHP version 2.0, final. - -With respect to the last release candidate, this release corrects a few small -bugs and adds a couple of new features: more authentication options (digest and -ntlm for servers, ntlm for proxies, and some https custom certificates stuff); -all the examples have been reviewed and some demo files added, -including a ready-made xmlrpc proxy (useful e.g. for ajax calls, when the xmlrpc -client is a browser); the server logs more warning messages for incorrect situations; -both client and server are more tolerant of commonly-found mistakes. -The debugger has been upgraded to reflect the new client capabilities. - -In greater detail: - -* fixed bug: method xmlrpcval::structmemexists($value) would not work -* fixed bug: wrap_xmlrpc_method would fail if invoked with a client object that - has return_type=phpvals -* fixed bug: in case of call to client::multicall without fallback and server error -* fixed bug: recursive serialization of xmlrpcvals loosing specified UTF8 charset -* fixed bug: serializing to ISO-8859-1 with php 5 would raise an error if non-ascii - chars where found when decoding -* new: client can use NTLM and Digest authentication methods for https and http 1.1 - connections; authentication to proxy can be set to NTLM, too -* new: server tolerates user functions returning a single xmlrpcval object instead - of an xmlrpcresp -* new: server does more checks for presence and correct return type of user - coded method handling functions, and logs inconsistencies to php error log -* new: client method SetCaCertificate($cert, $is_dir) to validate server against -* new: both server and client tolerate receiving 'true' and 'false' for bool values - (which btw are not valid according to the xmlrpc spec) - - -XML-RPC for PHP version 2.0RC3 - 2006/01/22 - -This release corrects a few bugs and adds some interesting new features. -It has been tested with PHP up to 4.4.2 and 5.1.2. - -* fixed bug: server not recognizing clients that declare support for http compression -* fixed bug: serialization of new xmlrpcval (8, 'string') when internal encoding - set to UTF-8 -* fixed bug: serialization of new xmlrpcval ('hello', 'int') would produce - invalid xml-rpc -* new: let the server accept 'class::method' syntax in the dispatch map -* new: php_xmlrpc_decode() can decode xmlrpcmessage objects -* new: both client and server can specify a charset to be used for serializing - values instead of the default 'US-ASCII+xml-entities-for-other-characters'. - Values allowed: ISO-8859-1 and UTF-8 -* new: the server object can register 'plain' php functions instead of functions - that accept a single parameter of type xmlrpcmsg. Faster, uses less memory - (but comes with minor drawbacks as well, read the manual for more details) -* new: client::setDebug(2) can be used to have the request payload printed to - screen before being sent -* new: server::service($data) lets user parse data other than POST body, for - easier testing / subclassing -* changed: framework-generated debug messages are sent back by the server base64 - encoded, to avoid any charset/xml compatibility problem -* other minor fixes - -The usual refactoring of a lot of (private) methods has taken place, with new -parameters added to some functions. -Javadoc documentation has been improved a lot. -The HTML documentation has been shuffled around a bit, hoping to give it a more -logical organization. - -The experimental support for the JSON protocol has been removed, and will be -packaged as a separate download with some extra very interesting stuff (human -readable auto-generated documentation, anyone?). - - -XML-RPC for PHP version 2.0RC2 - 2005/11/22 - -This release corrects a few bugs and adds basically one new method for better -HTTPS support: - - * fixed two bugs that prevented xmlrpc calls to take place over https - * fixed two bugs that prevented proper recognition of xml character set - when it was declared inside the xml prologue - * added xmlrpc_client::setKey($key, $keypass) method, to allow using client - side certificates for https connections - * fixed bug that prevented proper serialization of string xmlrpcvals when - $xmlrpc_internalencoding was set to UTF-8 - * fixed bug in xmlrpc_server::echoInput() (and marked method as deprecated) - * correctly set cookies/http headers into xmlrpcresp objects even when the - sned() method call fails for some reason - * added a benchmark file in the testsuite directory - -A couple of (private/protected) methods have been refactored, as well as a -couple of extra parameters added to some (private) functions - this has no -impact on the public API and should be of interest primarily to people extending -/ subclassing the lib. - -There is also new, PARTIAL support for the JSON-RPC protocol, implemented in -two files in the extras dir (more info about json-rpc at http://json-rpc.org) - - -XML-RPC for PHP version 2.0RC1 - 2005/10/03 - -I'm pleased to announce XML-RPC for PHP version 2.0, release candidate 1. - -This release introduces so many new features it is almost impossible to list them -here, making the library finally on pair with, if not more advanced than, any other -similar offer (e.g. the PEAR XMLRPC package or the Incutio IXR library). -No, really, trust me. - -The minimum supported PHP version is now 4.2 - natively - or 4.0.4pl1 - by usage of -a couple of compatibility classes (code taken from PEAR php_compat package). - -The placement of files and directories in the distribution has been deeply modified, -in the hope of making it more clear, now that the file count has increased. -I hope you find it easy. - -Support for "advanced" HTTP features such as cookies, proxies and keep-alives has -been added at last. - -It is now much easier to convert between xmlrpcval objects and php values, and -in fact php_xmlrpc_encode and php_xmlrpc_decode are now the recommended methods -for all cases, except when encoding base64 data. - -Two new (experimental) functions have been added, allowing automagic conversion -of a php function into an xmlrpc method to be exposed and vice-versa. - -PHP objects can be now automatically serialized as xmlrpc struct values and -correctly deserialized on the other end of the transmission, provided that the -same class definition is present on both sides and no object members are of -type resource. - -A lot of the existing class methods have been overloaded with extra parameters -or new functionality, and a few added ex-novo, making usage easier than ever. - -A complete debugger solution is included in the distribution. It needs a web server -to run (a freely available version of the same debugger is accessible online, it -can be found at http://phpxmlrpc.sourceforge.net). - -For a more detailed list of changes, please read carefully chapter 2 of the -included documentation, or, even better, take a look at the source code, which -is commented in javadoc style quite a bit. - - -XML-RPC for PHP version 1.2 - 2005/08/14 - -This removes all use of eval(), which is a potential security problem. -All users are encouraged to upgrade as soon as possible. -As of this release we are no longer php3-compatible. - - -XML-RPC for PHP version 1.1.1 - 2005/06/30 - -This is a security vulnerability fix release. -All users are invited to upgrade as soon as possible. - - -XML-RPC for PHP version 1.1 - 2005/05/03 - -I'm pleased to announce XML-RPC for PHP version 1.1 -It's taken two years to get to the this point, but here we are, finally. - -This is a bugfix and maintenance release. No major new features have been added. -All known bugs have been ironed out, unless fixing would have meant breaking -the API. -The code has been tested with PHP 3, 4 and 5, even tough PHP 4 is the main -development platform (and some warnings will be emitted when runnning PHP5). - -Notheworthy changes include: - - * do not clash any more with the EPI xmlrpc extension bundled with PHP 4 and 5 - * fixed the unicode/charset problems that have been plaguing the lib for years - * proper parsing of int and float values prepended with zeroes or the '+' char - * accept float values in exponential notation - * configurable http user-agent string - * use the same timeout on client socket reads as used for connecting - * more explicative error messages in xmlrpcresponse in many cases - * much more tolerant parsing of malformed http responses from xmlrpc servers - * fixed memleak that prevented the client to be used in never-ending scripts - * parse bigger xmlrpc messages without crashing (1MB in size or more) - * be tolerant to xmlrpc responses generated on public servers that add - javascript advertising at the end of hosted content - * the lib generates quite a few less PHP warnings during standard operation - -This is the last release that will support PHP 3. -The next release will include better support for PHP 5 and (possibly) a slew of -new features. - -The changelog is available at: -http://cvs.sourceforge.net/viewcvs.py/phpxmlrpc/xmlrpc/ChangeLog?view=markup - -Please report bugs to the XML-RPC PHP mailing list or to the sourceforge project -pages at http://sourceforge.net/projects/phpxmlrpc/ +XML-RPC for PHP version 3.0.1 - 201X/Y/Z + +Taking baby steps to modern-world php, this release is now tested using Travis ( https://travis-ci.org/ ). + +Improved: no need to call anymore $client->setSSLVerifyHost(2) to silence a curl warning when using https with recent curl builds + + +XML-RPC for PHP version 3.0.0 - 2014/6/15 + +This release corrects all bugs that have been reported and successfully reproduced since +version 3.0.0 beta. + +The requirements have increased to php 5.1.0 - which is still way older than what you should be running for any serious purpose, really. + +It also is the first release to be installable via composer. + +See the Changelog file or the pdf docs for a complete list of changes. + + +XML-RPC for PHP version 3.0.0 beta - 2009/09/05 + +This is the first release of the library to only support PHP 5. +Some legacy code has been removed, and support for features such as exceptions +and dateTime objects introduced. + +The "beta" tag is meant to indicate the fact that the refactoring has been more widespread +than in precedent releases and that more changes are likely to be introduced with time - +the library is still considered to be production quality. + +* improved: removed all usage of php functions deprecated in php 5.3, usage of assign-by-ref when creating new objects etc... +* improved: add support for the tag used by the apache library, both in input and output +* improved: add support for dateTime objects in both in php_xmlrpc_encode and as parameter for constructor of xmlrpcval +* improved: add support for timestamps as parameter for constructor of xmlrpcval +* improved: add option 'dates_as_objects' to php_xmlrpc_decode to return dateTime objects for xmlrpc datetimes +* improved: add new method SetCurlOptions to xmrlpc_client to allow extra flexibility in tweaking http config, such as explicitly binding to an ip address +* improved: add new method SetUserAgent to xmrlpc_client to to allow having different user-agent http headers +* improved: add a new member variable in server class to allow fine-tuning of the encoding of returned values when the server is in 'phpvals' mode +* improved: allow servers in 'xmlrpcvals' mode to also register plain php functions by defining them in the dispatch map with an added option +* improved: catch exceptions thrown during execution of php functions exposed as methods by the server +* fixed: bad encoding if same object is encoded twice using php_xmlrpc_encode + + +XML-RPC for PHP version 2.2.2 - 2009/03/16 + +This release corrects all bugs that have been reported and sucesfully reproduced since +version 2.2.1. +Regardless of the intimidating message about dropping PHP 4 support, it still does +support that ancient, broken and insecure platform. + + +* fixed: php warning when receiving 'false' in a bool value +* fixed: improve robustness of the debugger when parsing weird results from non-compliant servers +* fixed: format floating point values using the correct decimal separator even when php locale is set to one that uses comma +* fixed: use feof() to test if socket connections are to be closed instead of the number of bytes read (rare bug when communicating with some servers) +* fixed: be more tolerant in detection of charset in http headers +* fixed: fix encoding of UTF8 chars outside of the BMP plane +* fixed: fix detection of zlib.output_compression +* improved: allow the add_to_map server method to add docs for single params too +* improved: added the possibility to wrap for exposure as xmlrpc methods plain php class methods, object methods and even whole classes + + +XML-RPC for PHP version 2.2.1 - 2008/03/06 + +This release corrects all bugs that have been reported and sucesfully reproduced. +It is the last release of the library that will support PHP 4. + +* fixed: work around bug in php 5.2.2 which broke support of HTTP_RAW_POST_DATA +* fixed: is_dir parameter of setCaCertificate() method is reversed +* fixed: a php warning in xmlrpc_client creator method +* fixed: parsing of '1e+1' as valid float +* fixed: allow errorlevel 3 to work when prev. error handler was a static method +* fixed: usage of client::setcookie() for multiple cookies in non-ssl mode +* improved: support for CP1252 charset is not part or the library but almost possible +* improved: more info when curl is enabled and debug mode is on + + +XML-RPC for PHP version 2.2 - 2007/02/25 + +This release corrects a couple of bugs and adds a few minor features. + +* fixed: debugger errors on php installs with magic_quotes_gpc on +* fixed: support for https connections via proxy +* fixed: wrap_xmlrpc_method() generated code failed to properly encode php objects +* improved: slightly faster encoding of data which is internally UTF-8 +* improved: debugger always generates a 'null' id for jsonrpc if user omits it +* new: debugger can take advantage of a graphical value builder + (it has to be downloaded separately, as part of jsxmlrpc package) +* new: support for the xmlrpc extension +* new: server support for the system.getCapabilities xmlrpc extension +* new: wrap_xmlrpc_method() accepts two new options: debug and return_on_fault + + +XML-RPC for PHP version 2.1 - 2006/08/28 + +This release corrects quite a few bugs and adds some interesting new features. +There is a minor security enhancement and overall speedup too. + +It has been tested with PHP 4.0.5 up to 4.4.4 and 5.1.5. +Please note that 404pl1 is NOT supported, and has not been since 2.0. + +*** PLEASE READ CAREFULLY BELOW *** + +CHANGES THAT MIGHT AFFECT DEPLOYED APPLICATIONS: + +The wrap_php_function and wrap_xmlrpc_method functions have been moved out of +the base library file xmlrpc.inc into a file of their own: xmlrpc_wrappers.inc. +You will have to include() / require() it in your scripts if you have been using +those functions. + +For increased security, the automatic rebuilding of php object instances out of +received xmlrpc structs in wrap_xmlrpc_method() has been disabled (but it can be +optionally reenabled). + +The constructor of xmlrpcval() values has seen major changes, and it will not +throw a php warning anymore when invoked using an unknown xmlrpc type: the +error will only be written to php error log. Also new xmlrpcval('true', 'boolean') +is not supported anymore. + +MAJOR IMPROVEMENTS: + +The new function php_xmlrpc_decode_xml() will take the xml representation of +either an xmlrpc request, response or single value and return the corresponding +php-xmlrpc object instance. + +Both wrap_php_function() and wrap_xmlrpc_method() functions accept many more +options to fine tune their behaviour, including one to return the php code to +be saved and later used as standalone php script. + +A new function wrap_xmlrpc_server() has been added, to wrap all (or some) of the +methods exposed by a remote xmlrpc server into a php class. + +Lib internals have been modified to provide better support for grafting extra +functionality on top of it. Stay tuned for future releases of the EXTRAS package. + +Last but not least a new file has been added: verify_compat.php, to help users +diagnose the level of compliance of the current php install with the library. + +CHANGELOG IN DETAIL: + +* fixed bug 1311927: client not playing nice with some proxy/firewall on ports != 80 +* fixed bug 1334340: all ereg_ functions have been replaced with corresponding preg_ +* fixed bug: wrong handling of 'deflate' http encoding, both server and client side +* fixed bug: sending compressed responses when php output compression is enabled was not working +* fixed bug: addarray() and addstruct() where not returning 1 when adding data to already initialized values +* fixed bug: non-ascii chars used in struct element names where not being encoded correctly +* restored compatibility with php 4.0.5 (for those poor souls still stuck on it) +* server->service() now returns either the payload or xmlrpcresp instance +* server->add_to_map() now accepts methods with no param definitions +* added new function: php_xmlrpc_decode_xml() +* added new function: wrap_xmlrpc_server() +* major improvements and security enhancements to wrap_php_function() and wrap_xmlrpc_method() +* documentation for single parameters of exposed methods can be added to the dispatch map + (and turned into html docs in conjunction with a future release of the extras package) +* full response payload is saved into xmlrpcresp object for further debugging +* stricter parsing of incmoing xmlrpc messages: two more invalid cases are now detected + (double data element inside array and struct/array after scalar inside value element) +* debugger can now generate code that wraps a remote method into php function (works for jsonrpc, too) +* debugger has better support for being activated via a single GET call (for integration into other tools?) +* more logging of errors in a lot of situations +* javadoc documentation of lib files almost complete +* the usual amount of new testcases in the testsuite +* many performance tweaks and code cleanups +* added foundation for emulating the API of the xmlrpc extension (extras package needed) + + +XML-RPC for PHP version 2.0 - 2006/04/24 + +I'm pleased to announce XML-RPC for PHP version 2.0, final. + +With respect to the last release candidate, this release corrects a few small +bugs and adds a couple of new features: more authentication options (digest and +ntlm for servers, ntlm for proxies, and some https custom certificates stuff); +all the examples have been reviewed and some demo files added, +including a ready-made xmlrpc proxy (useful e.g. for ajax calls, when the xmlrpc +client is a browser); the server logs more warning messages for incorrect situations; +both client and server are more tolerant of commonly-found mistakes. +The debugger has been upgraded to reflect the new client capabilities. + +In greater detail: + +* fixed bug: method xmlrpcval::structmemexists($value) would not work +* fixed bug: wrap_xmlrpc_method would fail if invoked with a client object that + has return_type=phpvals +* fixed bug: in case of call to client::multicall without fallback and server error +* fixed bug: recursive serialization of xmlrpcvals loosing specified UTF8 charset +* fixed bug: serializing to ISO-8859-1 with php 5 would raise an error if non-ascii + chars where found when decoding +* new: client can use NTLM and Digest authentication methods for https and http 1.1 + connections; authentication to proxy can be set to NTLM, too +* new: server tolerates user functions returning a single xmlrpcval object instead + of an xmlrpcresp +* new: server does more checks for presence and correct return type of user + coded method handling functions, and logs inconsistencies to php error log +* new: client method SetCaCertificate($cert, $is_dir) to validate server against +* new: both server and client tolerate receiving 'true' and 'false' for bool values + (which btw are not valid according to the xmlrpc spec) + + +XML-RPC for PHP version 2.0RC3 - 2006/01/22 + +This release corrects a few bugs and adds some interesting new features. +It has been tested with PHP up to 4.4.2 and 5.1.2. + +* fixed bug: server not recognizing clients that declare support for http compression +* fixed bug: serialization of new xmlrpcval (8, 'string') when internal encoding + set to UTF-8 +* fixed bug: serialization of new xmlrpcval ('hello', 'int') would produce + invalid xml-rpc +* new: let the server accept 'class::method' syntax in the dispatch map +* new: php_xmlrpc_decode() can decode xmlrpcmessage objects +* new: both client and server can specify a charset to be used for serializing + values instead of the default 'US-ASCII+xml-entities-for-other-characters'. + Values allowed: ISO-8859-1 and UTF-8 +* new: the server object can register 'plain' php functions instead of functions + that accept a single parameter of type xmlrpcmsg. Faster, uses less memory + (but comes with minor drawbacks as well, read the manual for more details) +* new: client::setDebug(2) can be used to have the request payload printed to + screen before being sent +* new: server::service($data) lets user parse data other than POST body, for + easier testing / subclassing +* changed: framework-generated debug messages are sent back by the server base64 + encoded, to avoid any charset/xml compatibility problem +* other minor fixes + +The usual refactoring of a lot of (private) methods has taken place, with new +parameters added to some functions. +Javadoc documentation has been improved a lot. +The HTML documentation has been shuffled around a bit, hoping to give it a more +logical organization. + +The experimental support for the JSON protocol has been removed, and will be +packaged as a separate download with some extra very interesting stuff (human +readable auto-generated documentation, anyone?). + + +XML-RPC for PHP version 2.0RC2 - 2005/11/22 + +This release corrects a few bugs and adds basically one new method for better +HTTPS support: + + * fixed two bugs that prevented xmlrpc calls to take place over https + * fixed two bugs that prevented proper recognition of xml character set + when it was declared inside the xml prologue + * added xmlrpc_client::setKey($key, $keypass) method, to allow using client + side certificates for https connections + * fixed bug that prevented proper serialization of string xmlrpcvals when + $xmlrpc_internalencoding was set to UTF-8 + * fixed bug in xmlrpc_server::echoInput() (and marked method as deprecated) + * correctly set cookies/http headers into xmlrpcresp objects even when the + sned() method call fails for some reason + * added a benchmark file in the testsuite directory + +A couple of (private/protected) methods have been refactored, as well as a +couple of extra parameters added to some (private) functions - this has no +impact on the public API and should be of interest primarily to people extending +/ subclassing the lib. + +There is also new, PARTIAL support for the JSON-RPC protocol, implemented in +two files in the extras dir (more info about json-rpc at http://json-rpc.org) + + +XML-RPC for PHP version 2.0RC1 - 2005/10/03 + +I'm pleased to announce XML-RPC for PHP version 2.0, release candidate 1. + +This release introduces so many new features it is almost impossible to list them +here, making the library finally on pair with, if not more advanced than, any other +similar offer (e.g. the PEAR XMLRPC package or the Incutio IXR library). +No, really, trust me. + +The minimum supported PHP version is now 4.2 - natively - or 4.0.4pl1 - by usage of +a couple of compatibility classes (code taken from PEAR php_compat package). + +The placement of files and directories in the distribution has been deeply modified, +in the hope of making it more clear, now that the file count has increased. +I hope you find it easy. + +Support for "advanced" HTTP features such as cookies, proxies and keep-alives has +been added at last. + +It is now much easier to convert between xmlrpcval objects and php values, and +in fact php_xmlrpc_encode and php_xmlrpc_decode are now the recommended methods +for all cases, except when encoding base64 data. + +Two new (experimental) functions have been added, allowing automagic conversion +of a php function into an xmlrpc method to be exposed and vice-versa. + +PHP objects can be now automatically serialized as xmlrpc struct values and +correctly deserialized on the other end of the transmission, provided that the +same class definition is present on both sides and no object members are of +type resource. + +A lot of the existing class methods have been overloaded with extra parameters +or new functionality, and a few added ex-novo, making usage easier than ever. + +A complete debugger solution is included in the distribution. It needs a web server +to run (a freely available version of the same debugger is accessible online, it +can be found at http://phpxmlrpc.sourceforge.net). + +For a more detailed list of changes, please read carefully chapter 2 of the +included documentation, or, even better, take a look at the source code, which +is commented in javadoc style quite a bit. + + +XML-RPC for PHP version 1.2 - 2005/08/14 + +This removes all use of eval(), which is a potential security problem. +All users are encouraged to upgrade as soon as possible. +As of this release we are no longer php3-compatible. + + +XML-RPC for PHP version 1.1.1 - 2005/06/30 + +This is a security vulnerability fix release. +All users are invited to upgrade as soon as possible. + + +XML-RPC for PHP version 1.1 - 2005/05/03 + +I'm pleased to announce XML-RPC for PHP version 1.1 +It's taken two years to get to the this point, but here we are, finally. + +This is a bugfix and maintenance release. No major new features have been added. +All known bugs have been ironed out, unless fixing would have meant breaking +the API. +The code has been tested with PHP 3, 4 and 5, even tough PHP 4 is the main +development platform (and some warnings will be emitted when runnning PHP5). + +Notheworthy changes include: + + * do not clash any more with the EPI xmlrpc extension bundled with PHP 4 and 5 + * fixed the unicode/charset problems that have been plaguing the lib for years + * proper parsing of int and float values prepended with zeroes or the '+' char + * accept float values in exponential notation + * configurable http user-agent string + * use the same timeout on client socket reads as used for connecting + * more explicative error messages in xmlrpcresponse in many cases + * much more tolerant parsing of malformed http responses from xmlrpc servers + * fixed memleak that prevented the client to be used in never-ending scripts + * parse bigger xmlrpc messages without crashing (1MB in size or more) + * be tolerant to xmlrpc responses generated on public servers that add + javascript advertising at the end of hosted content + * the lib generates quite a few less PHP warnings during standard operation + +This is the last release that will support PHP 3. +The next release will include better support for PHP 5 and (possibly) a slew of +new features. + +The changelog is available at: +http://cvs.sourceforge.net/viewcvs.py/phpxmlrpc/xmlrpc/ChangeLog?view=markup + +Please report bugs to the XML-RPC PHP mailing list or to the sourceforge project +pages at http://sourceforge.net/projects/phpxmlrpc/ diff --git a/README b/README index 9647aba..8004813 100644 --- a/README +++ b/README @@ -1,15 +1,15 @@ -NAME: XMLRPC for PHP - -DESCRIPTION: A php library for building xmlrpc clients and servers - - - -Installation instructions are in the INSTALL file. - -The manual, in HTML and pdf versions, can be found in the doc/ directory. - -Recent changes in the ChangeLog file. - -Use of this software is subject to the terms in doc/index.html - -The passphrase for the rsakey.pem certificate is 'test'. +NAME: XMLRPC for PHP + +DESCRIPTION: A php library for building xmlrpc clients and servers + + + +Installation instructions are in the INSTALL file. + +The manual, in HTML and pdf versions, can be found in the doc/ directory. + +Recent changes in the ChangeLog file. + +Use of this software is subject to the terms in doc/index.html + +The passphrase for the rsakey.pem certificate is 'test'.