forked from gggeek/phpxmlrpc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog
1623 lines (1076 loc) · 62.8 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
NB: All recent commits are available online.
This file will not be updated further.
See https://github.com/gggeek/phpxmlrpc/commits/master
2014-05-26 - G. Giunta ([email protected])
* removed bundled phpunit
* converted all tabs to spaces in php files and removed closing tags
2014-05-12 - Samu Voutilainen ([email protected])
* removed obsolete xml.so open; dl() is deprecated and removed from 5.3.0
* removed deprecated xmlEntities
* removed deprecated xmlrpc_backslash
* converted $GLOBALS to internal class. This makes testing much easier and should be more flexible regarding other projects
* changed verifyhost from 1 to 2. This makes modern php versions work properly.
* split off each class in its own file
2014-02-03 - G. Giunta ([email protected])
* bumped up requirements to php 5.1.0
2014-01-10 - G. Giunta ([email protected])
* 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 ([email protected])
* 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 ([email protected])
* 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 ([email protected]) thanks amoe
* fixed: bad variables in "make install" make target
2009-11-11 - G. Giunta ([email protected]) thanks Ikiro Watanabe
* added INSTALL file
2009-09-05 - G. Giunta ([email protected])
* 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 ([email protected])
* xmlrpc_wrappers.inc: improve compatibility with php 5.0 when registering
class/object methods
2009-08-02 - G. Giunta ([email protected]) 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 ([email protected])
* 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 ([email protected])
* server.php: remove usage of ereg*(), deprecated in php 5.3
2009-07-16 - G. Giunta ([email protected]) thanks Jean-Jacques Sarton
* xmlrpc.inc: add support for the <ex:nil/> 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 ([email protected]) 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 ([email protected])
* 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 ([email protected])
* 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 ([email protected]) 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 ([email protected])
* 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 ([email protected])
* xmlrpcs.inc: allow add_to_map server method to add docs for single params, too
2008-09-20 - G. Giunta ([email protected])
* 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 ([email protected]) 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 ([email protected])
* 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 ([email protected])
* tagged and released as 2.2.1
* Makefile: improve usage on windows xp despite cmd's broken mkdir
2007-10-26 - G. Giunta ([email protected]) thanks sajo_raftman
* xmlrpc.inc: remove one warning in xmlrpc_client creator
2007-10-26 - G. Giunta ([email protected])
* xmlrpc.inc: improve support for windows cp1252 character set (still
commented in the code)
2007-09-05 - G. Giunta ([email protected])
* 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 ([email protected])
* xmlrpc.inc: fix parsing of '1e+1' as valid float
2007-09-01 - G. Giunta ([email protected]), 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 ([email protected])
* xmlrpc.inc: minor fix in cookie parsing
2007-07-31 - G. Giunta ([email protected])
* xmlrpc.inc: Fix usage of client::setcookie() for multiple cookies in non-ssl mode
2007-07-26 - G. Giunta ([email protected]) thanks Mark Olive
* xmlrpc.inc: Fix for bug # 1756274 (usage of cookies in ssl mode)
2007-04-28 - G. Giunta ([email protected])
* 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 ([email protected])
* 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 ([email protected])
* 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 ([email protected])
* 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 ([email protected])
* Makefile, doc/makefile: assorted improvements
2007-03-03 - G. Giunta ([email protected])
* xmlrpc.inc: micro-optimization in declaration of global vars xmlrpcerr, xmlrpcstr
2007-02-25 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* testsuite.php: added one test for automatic encoding/decoding case
2007-02-05 Gaetano Giunta <[email protected]>
* xmlrpc.inc: slightly faster encoding of UTF8 data to ascii
2007-01-11 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* xmlrpc.inc, xmlrpcs.inc, testsuite.php: added support for <NIL/> and
system.getCapabilities, and one more testcase to go with it
2006-09-05 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
xmlrpc_wrappers.inc: add two more options in wrap_xmlrpc_method and fix
typo to allow obj encoding
2006-08-28 Gaetano Giunta <[email protected]>
* xmlrpc_wrappers.inc: more options added to wrap_php_function and
wrap_xmlrpc_method
* xmlrpc.inc: pave the way to support for <nil/>
* doc/xmlrpc_php.xml documentation updated
* tagged and released as 2.1
2006-08-25 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* xmlrpc.inc: addscalar() and addstruct() where not returning 1 when adding
data to an already formed value
2006-08-21 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* assorted fixes to make the suite more compatible with php 4.0.5 and 5.x
2006-07-02 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* verify_compat.php: more tests
2006-06-09 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* added new file: verify_compat.php, to help troubleshooting platform
support for the library; added it to makefile, too
2006-05-24 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* minor fixes makefiles. Tagged and released as 2.0 final
2006-04-22 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* xmlrpc.inc: fixed bug in xmlrpcval::structmemexists()
* testsuite.php: added test case for xmlrpcval::structmemexists()
2006-04-03 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* added a new demo file: simple_call.php
2006-02-20 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* xmlrpc.inc: fix bug in multicall in case of no fallback and server error
2006-01-30 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* benchmark.php: do not run http 1.1 tests if CURL notfound
* Released as 2.0 Rc3
2006-01-19 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* testsuite.php: minor fix to expected date format in http cookie hedaer
to cope with PHP 5.1.2
2006-01-05 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* released as 2.0 RC2
2005-11-21 Gaetano Giunta <[email protected]>
* xmlrpc.inc: fix warnings about references for PHP 4.1.X
* Whitespace cleanup on all the lib
2005-11-16 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* xmlrpc.inc: fixed error that prevented usage of HTTPS (the client
always determined that ssl support was not present)
2005-10-03 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* xmlrpc.inc, xmlrpcs.inc: Switched to using $GLOBALS instead of calling
global $varname
2005-07-22 Miles Lott <[email protected]>
* Removed: bug_* files
2005-07-14 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
tagged and released version 1.1.1, backporting security fixes from HEAD
2005-06-28 Gaetano Giunta <[email protected]>
* 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 <[email protected]>
* xmlrpc.inc: (tentative) fix for security problem reported by
[email protected]: 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 <[email protected]>
* 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 <[email protected]>
* 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