History Of Code Changes
This page lists all significant changes to the code, by release.
Xmlrpc-c Advanced (1.64.xx)
The changes in the current Xmlrpc-c Advanced release series are
here.
Xmlrpc-c Stable (1.60.xx)
The changes in the current Xmlrpc-c Stable release series are
here.
Xmlrpc-c Super Stable (1.59.xx)
The changes in the current Xmlrpc-c Super Stable release series are
here.
Release 1.65
Not released yet.
Subversion directory trunk.
Release 1.64
Released 24.09.24.
Subversion directory release_number/01.64.00.
- CGI server: fix crash when client does not send content type header field.
Release 1.63
Released 24.06.25.
Subversion directory release_number/01.63.00.
- Add carriageParm_curl0::useUnixSocket,
xmlrpc_server_info_set_unix_socket.
Release 1.62
Released 24.03.25.
Subversion directory release_number/01.62.00.
- Fix always incorrect results, wild memory reference with
xmlrpc_value_new of array or structure. Always broken
(xmlrpc_value_new was new in Xmlrpc-c 1.43 (September 2015))
- Install: create Pkg-config files that use the conventional {prefix},
etc. variables so they can be overridded and pkg-config time.
Release 1.61
Released 23.12.26.
Subversion directory release_number/01.61.00.
- Build: fix missing options on compile of openssl.o. Probably always
broken.
- Build: fix compiler warning about format not being a string literal.
- Don't use deprecated Curl options RANDOM_FILE, EGD_SOCKET, and
PROGRESS_FUNCTION if Curl libary is recent.
- Don't use deprecated OpenSSL function ERR_get_error_line if
OpenSSL library is recent.
Release 1.60
Released 22.09.24
Subversion directory release_number/01.60.00.
- Abyss HTTP server: use MSG_MORE to cause OS to send larger, logically
complete TCP packets.
- Use PKG_CONFIG environment variable for the name of the pkg-config
program.
- Abyss HTTP server: Fix memory corruption in processing of
"authorization" header field. Broken in Xmlrpc-c 1.41 (March
2015).
Release 1.59
Released 21.09.26
Subversion directory release_number/01.59.00.
- Abyss: fix bug: wild memory reference when server times out waiting
for request header. Introduced with Release 1.44 (December 2015).
- Abyss: Fix handling of error on pipe used to interrupt the wait for
a client connection. Probably no real effect. Introduced with Release
1.38 (March 2014).
- Build of client libraries: fix failure to find Curl stuff.
Introduced with release 1.54 (December 2018).
Release 1.58
Released 20.03.29
Subversion directory release_number/01.58.00.
- Build: Fix link failure in several tools because they fail to link
the Curl library. Don't know how long this was broken.
- Build: Eliminate compiler warnings with GCC 6.3
Release 1.57
Released 19.12.29
Subversion directory release_number/01.57.00.
- Build: fix bug: won't compile with --enable-libxml2, introduced with
Release 1.44 (December 2015).
- Build: update config.guess and config.sub so Configure can recognize
newer environments.
Release 1.56
Released 19.09.25
Subversion directory release_number/01.56.00.
- Abyss XML-RPC server 'runConn' method: throw exception instead of exiting
program when unable to execute an HTTP transaction.
- Build: fix bug: ignores LDFLAGS_FOR_BUILD, LDFLAGS_PERSONAL, and
LDFLAGS_PTHREAD when building the build tool Gennmtab.
Release 1.55
Released 19.06.28.
Subversion directory release_number/10.55.00.
- xmlrpc program: Add -xmlsizelimit .
Release 1.54
Released 18.12.29.
Subversion directory release_number/10.54.00.
- Build: Use 'curl-config' found at configure time, not at make time.
Release 1.53
Released 18.09.30.
Subversion directory release_number/10.53.00.
- Fix bug: 'toValue' won't compile for vector of vectors or map of vectors.
Thanks Yang Bo .
- Fix tiny memory leak in virtually impossible low memory situation.
Release 1.52
Released 18.06.26
Subversion directory release_number/10.52.00.
- Build: fix missing xmlrpc-c/config.h include file in separate build tree
build. Thanks Philip Belemezov <philip@belemezov.net>.
Release 1.51
Released 17.12.26.
Subversion directory release_number/10.51.00.
- Build: Add --disable-abyss-openssl for build environments that appear to
have Openssl but don't really. (A Pkg-config design flaw makes that
happen sometimes - you can't control what directories it searches for .pc
files).
- Windows build: add Visual Studio 2017 project files, fix various things
broken for Windows in recent updates. Thanks to Maksym Veremeyenko
.
Release 1.50
Released 17.09.28.
Subversion directory release_number/10.50.00.
- Build: fix installation of programs. Introduced in Xmlrpc-c 1.47
(September 2016).
- Windows build: fix ChanSwitchUnixGetListenName not found.
- Windows build: Add current VS2010express project files.
- Windows build: various fixes. Doesn't necessarily work yet.
Release 1.49
Released 17.03.26.
Subversion directory release_number/10.49.00.
- Add program xmlrpc_dumpserver.
Release 1.48
Released 16.12.27.
Subversion directory release_number/10.48.00.
- Disable 10M restriction on document size in Libxml2 XML parser.
- Build: Recognize additional Linux "host OS" environments. E.g.
"linux-uclibc".
- Build: replace BUILDTOOL_CC and BUILDTOOL_CCLD with more conventional
CC_FOR_BUILD. Add CFLAGS_FOR_BUILD, LDFLAGS_FOR_BUILD.
- Build: Don't attempt to build C++ internal utility module
cmdline_parser_cpp if we aren't building the C++ libraries. In that case, 1)
it isn't needed, and 2) the environment probably is incapable of compiling
C++.
- Build: Use AC_CHECK_TOOL to determine 'ar' command and AC_PROG_RANLIB to
determine 'ranlib' command to use.
- Build: fix compile failure in build for a system that does not have Unicode
wide characters (wchar_t).
Release 1.47
Released 16.09.25.
Subversion directory release_number/10.47.00.
- Install: fix bug: xmlrpc_expat.pc not installed.
- Install: Add 'uninstall' make target
Release 1.46
Released 16.06.29.
Subversion directory release_number/01.46.00.
- Packet stream client: Add option to throw a BrokenConnEx exception when
transport fails because the server hung up or network broke, instead of
throwing error.
- Add ServerAbyss::getListenName method, ChanSwitchUnixGetListeName: ability
to find out on what port your server is listening.
- Packet stream server ('serverPstreamConn'): fix bug: runOnce() fails with
indication that it was interrupted when the server hangs up. Always broken
(interruptible RunOnce() was new in Xmlrpc-c 1.14 (March 2008).
- Fix compile failure with old OpenSSL that doesn't have
SSL_ERROR_WANT_ACCEPT. Introduced in Xmlrpc-c 1.45.
Release 1.45
Released 16.03.27.
Subversion directory release_number/01.45.00.
- Add SSL/TLS capability via OpenSSL to Abyss server.
- Fix xmlrpc_mem_block accidentally made private in 1.44.
- Build: Remove example and test program usage of XML parser
facility (<xmlrpc-c/xmlparser.h>), which was made private in
1.44, so the examples and tools no longer build.
Release 1.44
Released 15.12.31.
Subversion directory release_number/01.44.00.
- C++: Add 'toValue' and 'fromValue' for 64-bit integer (xmlrpc_c::value_i8).
- Memory block utility: Remove xmlrpc_mem_block_init and
xmlrpc_mem_block_clean. These complicate forward compatibility and
probably were never used. xmlrpc_mem_block_new and
xmlrpc_mem_block_free remain to fulfill the same purpose.
- Remove XML parser (<xmlrpc-c/xmlparser.h>) from external API. This
is not specific to XML-RPC, so has no business being a service of Xmlrpc-c.
It is just an abstraction to allow us to use various XML parsing libraries (to
wit, Expat and Libxml2). We don't think it was ever used externally.
- Build: make install does not create empty man page directory.
Release 1.43
Released 15.09.27.
Subversion directory release_number/01.43.00.
- Add xmlrpc_value_new(): deep copy of xmlrpc_value.
- Abyss C++: Add 'terminate' and 'resetTerminate' methods, analogous
to C Abyss 'ServerTerminate' and 'ServerResetTerminate'.
- Fix bug: infinite recursion if you try to format a floating point value
that was created from something other than a finite number. Creation of a
floating point XML-RPC value from something other than a number now fails.
Introduced in Xmlrpc-c 1.15 (June 2008).
- Curl client: fix garbage in message where explanation from Curl library
belongs. Always there, with some Curl libraries.
- Curl client: fix instantaneous timeout with some Curl libraries.
Introduced in Xmlrpc-c 1.41 (March 2015).
- Curl client: fix 'connect_timeout' transport parameter interpreted as
'timeout'. Always broken ('connect_timeout' was new in Xmlrpc-c 1.41
(March 2015)).
Release 1.42
Released 15.06.28.
Subversion directory release_number/01.42.00.
- AbysssServer: add 'Session::headerValue' and 'Session::getHeaderValue'.
- Fix crash in 'xmlrpc' program under most circumstances. Broken in
Xmlrpc-c 1.40 (December 2014).
- Packet socket: fix missing parenthesis in error message. Broken in
Xmlrpc-c 1.25 (December 2010).
Release 1.41
Released 15.03.26.
Subversion directory release_number/01.41.00.
- Fix crash: multithreaded client program that uses the Curl XML transport
and does not specify a Curl timeout transport parameter
crashes because of signal use inside the Curl library, unless the Curl library
is one that does DNS lookups with the ARES library.
- Make a client that uses the Curl XML transport and does not specify a
Curl timeout transport parameter wait indefinitely for a DNS lookup, or
at least until the OS DNS lookup service gives up, unless the Curl library is
one that does DNS lookups with the ARES library. In previous releases, the
RPC failed after waiting 5 minutes. This was not intended as an enhancement,
but rather is a side effect of fixing the crash described above. But it also
adds consistency, since the wait for the DNS lookup was always indefinite,
ironically, in the case that the program specified timeout.
- Add connect_timeout curl transport parameter.
- Packet stream socket: fix: sends corrupted packet when the packet contains
an ESC character. Always broken. (packet stream sockets were new in
Xmlrpc-c 1.11 - June 2007).
- Add XMLRPC_TRACE_PACKETSOCKET environment variable: a means of tracing
communication at the packet socket level.
- Build: Use -pthread on compile and link instead of just linking libpthread
if compiler is GNU.
- Build: Don't rely on <features.h> to define __BEGIN_DECLS
- Build: don't ignore LDFLAGS in build of Gennmtab. Broken since
Xmlrpc-c 1.32 (September 2012).
- Many changes to accomodate Mingw. May not work completely yet.
- Build: fix a "recompile with -fPIC" failure in parallel make.
- Build: fix failure with configure --disable-abyss-threads. Introduced in
Xmlrpc-c 1.38 (March 2014).
Release 1.40
Released 14.12.28.
Subversion directory release_number/01.40.00.
- Fix AbyssServer::readRequestBody for chunked bodies. Always broken
(AbyssServer was new in Netpbm 1.39 (September 2014).
- Add pkg-config files (e.g. xmlrpc.pc)
- Build: fix 'make distclean' so it doesn't leave src/cpp/srcdir and
src/cpp/blddir.
Release 1.39
Released 14.09.27.
Subversion directory release_number/01.39.00.
- Add C++ Abyss server classes. Not documented yet.
- Abyss: with access control, send Access-Control-Allow-Headers headers
for Content-Type and Content-Length.
- Curl client: Fix bogus "please call curl_muti_perform()" error
with very old Curl library.
- Abyss: fix bug: RequestAuth() always says not authenticated. Broken in
1.10 (March 2007).
- Abyss: fix missing prototype for RequestAuth(). Always broken.
- Install: fix bug: <xmlrpc-c/base64.hpp> not installed.
Release 1.38
Released 14.03.25.
Subversion directory release_number/01.38.00.
- Fix bug: When serializing a very large floating point number, sender of
an XML-RPC message adds some junk after the decimal point. With assertion
checking enabled, it just crashes. Broken in 1.15 (June 2008).
- xmlrpc program: add ability to specify a struct or array
RPC parameter (struct/ and array/).
- Abyss: fix parsing of URI with %HH escape sequence - always said invalid
URI. Broken in 1.31 (June 2012).
- Abyss: Fail ServerRun() and ServerRunOnce() if user hasn't done
ServerInit() instead of trying to make the channel switch accept a connection
even though it isn't in listening state. Combined with the two problems
below, this caused POSIX socket servers to go into an infinite loop if the
user called ServerRun() without a prior ServerInit().
- Abyss: Fail ChanSwitchAccept() if user hasn't done ChanSwitchListen()
instead of trying to make the OS do the accept.
- Abyss: Unix socket: Fix bug: POLLHUP and POLLERR state on listening or
interrupt socket caused accept function to return as if the wait had simply
been interrupted.
- Abyss: fix error HTTP response for invalid request line - showed wrong
request line. Always broken. (The request line in that message was new in
Xmlrpc-c 1.19 (June 2009).
- Abyss: add details to invalid request line error HTTP response.
- xmlrpc-c-config: add "abyss" target to get just the Abyss
library - no XML-RPC stuff.
Release 1.37
Released 13.12.31.
Subversion directory release_number/01.37.00.
- Abyss server: Fix bug: reported HTTP status 408 (Request timed out) for
all problems getting the request from the client. Also add text detail of
problems getting the request from the client to the HTTP error response.
- Fix pervasive wild pointer dereference when memory allocation of small
string fails. Introduced in 1.01 (January 2005).
- Fixes for Windows build problems introduced in 1.33.
Release 1.36
Released 13.09.29.
Subversion directory release_number/01.36.00.
- C++ server: add versions of 'xmlrpc_c::registry::addMethod' that takes a
simple pointer to the method object, so you can use it with automatic and
static method objects. Same for 'xmlrpc_c::registry::setDefaultMethod'.
- Remove 128M limit on certain memory allocations.
- Change strategy for overallocating memory - grow blocks no more than a
megabyte at a time; shrink blocks sometimes.
- Fix interpretation of dateTime.iso8601 variant with timezone information.
As broken, it would add up to a second to the correct datetime or reject the
message claiming that it has invalid syntax. Always broken (recognition of
the timezone variant was introduced in Xmlrpc-c 1.20 (September 2009).
- 'xmlrpc', 'xmlrpc_pstream', 'xmlrpc_parsecall': add ability to display
dateTime.iso8601.
- AIX build: various fixes.
- Windows build: fix reference to _snprintf; broke in Xmlrpc-c 1.34.
- Windows build: fix lock_windows.c so it compiles. File was new in
Xmlrpc-c 1.33 and never compiled. Fix girmem.cpp to use lock_platform, etc.
instead of pthreadx, which was removed in Xmlrpc-c 1.33.
Release 1.35
Released 13.06.27.
Subversion directory release_number/01.35.00.
- Abyss: fix wrong peer address with Unix socket channel made with
ChannelUnixCreateFd(). Always broken (ability to get peer address was added
in Release 1.07 (October 2006)).
- JSON value formatting: Fix buffer overrun.
- Build: build 'configure' with Autoconf 2.69 (previously built with 2.67).
Release 1.34
Released 13.03.30.
Subversion directory release_number/01.34.00
- Build: fix libpthread dependency bug introduced in 1.33.00.
- Test program build: include <unistd.h> instead of
<sys/unistd.h>.
Release 1.33
Released 12.12.27.
Subversion directory release_number/01.33.00.
- Make xmlrpc_value thread-safe (after construction, when the only
modification allowed is to the reference count).
- Client with Curl transport: fix bug which disables interruption unless you
register a progress function for the transport. Introduced in 1.24 (September
2010).
- Add xmlrpc_init(), xmlrpc_term().
- Server: fix method add failure when signature string contains
"I" (for 64 bit integer). Always broken (64 bit integer type
was new in Xmlrpc-c 1.07 (October 2006)).
- libxml2: fix memory leaks. Always broken (ability to use libxml2 was
added in Release 1.00 (October 2004)).
- Abyss: Fix memory read through wild pointer upon interruption of server.
Probably harmless.
- Windows build: rename DLL configurations to avoid ambiguity between DLL
and static library builds.
Release 1.32
Released 12.09.28.
Subversion directory release_number/01.32.00.
- Abyss server: terminate sooner when the HTTP request handler requests
shutdown. Formerly, after e.g. a 'system.shutdown' RPC, the server waited for
the persistent TCP connections, including the one in which the RPC transaction
was transported, to end (typically 15 seconds later). Now, it interrupts
channel reads and writes on all connections so they will notice they are
supposed to wind up and do so.
- Abyss server: add basic server operation tracing with ABYSS_TRACE_SERVER
environment variable.
- Abyss server, XML-RPC Abyss server: add control of number of simultaneous
connections and OS connection backlog.
- Use random salt in hash values in built-in XML parser. Without this, a
malicious user can create a putative XML-RPC call or response that takes a
long time to parse, thus using excessive CPU resources. This code is adapted
from true Expat's fix for CVE-2012-0876 to XML-RPC's fork of Expat, by Tyler
Hicks <tyhicks@canonical.com>.
- Server: Fix crash when string value in parameter list contains invalid
UTF-8. Broken in 1.18 (March 2006). Diagnosed by Stephen Hansen, Programmer
<stephen@tlo.com>.
- Fix crash in built-in XML parser which causes a memory leak when it can't
get additional memory (re-allocation fails). This code is adapted from true
Expat's fix for CVE-2012-1148 to XML-RPC's fork of Expat, by Tyler Hicks
<tyhicks@canonical.com>.
- Build: fix build tree != source tree bug: no transport_config.mk.
Broken in 1.10 (March 2007).
- Windows build: properly export client class in xmlrpc-c_client++.dll. By
Maksym Veremeyenko <verem@m1stereo.tv>
- Build: don't build tools by default. Broken in 1.30 (March 2012).
- Build: fix up how LDFLAGS, CFLAGS, and CXXFLAGS (make variables) are
used. Deprecate LADD and CADD, which were meant for the same thing.
- Build: fix make clean so it cleans src/cpp.
- Build: fix so build of test programs does not fail if you didn't build
client facilities.
- Build: fix 'check'. By Tyler Hicks <tyhicks@canonical.com>.
Release 1.31
Released 12.06.30.
Subversion directory release_number/01.31.00.
- Abyss XML-RPC server: make xmlrpc_server_abyss() fail instead of exiting
program when it can't bind and listen.
- Abyss server: Add ServerInit2() - fails instead of exiting program if it
can't bind and listen.
- Curl client XML transport: when server sends garbage instead of valid HTTP
response, put the garbage (which is often an error message) in the error
message.
- Add xmlrpc_read_datetime_8601(), xmlrpc_c::value_datetime::iso8601Value().
- xmlrpc_c::value_datetime: add ability to construct from and cast to
xmlrpc_datetime.
- Fix crash due to bogus memory free when xmlrpc_parse_value() fails.
Broken in 1.07 (October 2006).
- Abyss server: Fix bug: rejects request with colons in the host name
(e.g. IPv6 address form "[::1]") as invalid.
- Curl client XML transport: Fix error message when servers responds with
non-HTTP garbage. Used to say HTTP response code is zero.
- Curl client XML transport: fix occasional crash with modern Curl
introduced in 1.28.
- Abyss server: Fix crash when client doesn't specify access control.
Broken in 1.25 (December 2011).
- Abyss server: Improved formatting of IPv6 addresses for Abyss
"channel info.". Also no more build-time dependency on nonstandard
s6_addr16, introduced in 1.29.
- Windows: Remove #include <windows.h> from public header file to
avoid conflicts with other inclusions in user's program that include other
variations of <windows.h>. By Maksym Veremeyenko
<verem@m1stereo.tv>
- Install: fix install of man pages to wrong directory. Broken in 1.18
(March 2009).
- Windows build: Fix winsock2 conflict.
Release 1.30
Released 12.03.31.
Subversion directory release_number/01.30.00.
- Add ability for Abyss and XML-RPC Abyss server to listen on a particular
interface (IP address).
- Abyss XML-RPC server: Fix bug in access control expiration.
- xmlrpc, xmlrpc_pstream client programs: fix bug in display
of unprintable ASCII as \xHH: shows \xff where it should be something else.
- Windows Abyss: fix 16 byte per thread memory leak. Thanks Angelo Masci.
- Build: add missing include of <ostream> to base.hpp. Broken in
1.26.
- Build: remove --enable-tools option added in 1.18. User can just do
'make -C tools ' or 'make all' to get that.
Release 1.29
Released 11.12.31.
Subversion directory release_number/01.29.00.
- Abyss: Add ChanSwitchUnixCreateIpV6Port: ability to listen for
client connections on an IP Version 6 TCP port.
- Curl client XML transport: Add 'referer' option.
- Improved invalid UTF-8 error message.
- xmlrpc client program: fix bug: doesn't accept b/f to
mean boolean false. Broken since 1.07.
- Fix crash when sending structure with a member value too large.
Introduced in 1.21.
- Fix Windows build, undefined macro XMLRPC_S_IWUSR introduced in 1.28.
Release 1.28
Released 11.09.27.
Subversion directory release_number/1.28.00.
- Curl client: add "gssapi_delegation" option. Needed in some
cases with newer Curl libraries to get back old function.
- Fix bug: infinite loop parsing XML when a string or character data is
longer than 1K in UTF-8. Introduced in 1.12.
- Curl client: fix libcurl version in user-agent header. Always broken
(user-agent function added in Release 1.03).
- Client curl transport: fix bug: multiple authentication methods doesn't
work; only one of them takes effect. Always broken.
- C++ Curl client: fix bug: ignores proxy Curl transport options. Always
broken.
- Windows: Add VS2008 64 bit static library building. Remove MSVC 6
project files. From now on, VS2008 will be the standard. The single
set of project files build static and DLL, 32 bit and 64.
- Accomodate newer libcurl, which does not have <curl/types.h>.
- Fix per-connection memory leak in libwww client XML transport. Present
since the beginning.
- Build: fix some parallel make forced ordering.
- Build with --disable-abyss-threads: include <sys/wait.h> instead of
<wait.h> in Abyss thread_fork.c.
- Build of test programs: Fix "struct sockaddr_in" not defined
in server_pstream.cpp.
- Build: fix undeclared struct timespec.
- Build: Work with systems that don't define S_IREAD in <sys/stat.h>.
- C++: Reorder arrayValueSlice() and arrayValueAvrray() definitions in
<xmlrpc-c/base.hpp> to please Clang.
Release 1.27
Released 11.06.27.
Subversion directory release_number/1.27.00.
- Many changes to accomodate Mingw. May not work completely yet. By Maksym
Veremeyenko <verem@m1stereo.tv>.
- Windows build: update non-DLL project files to accomodate recent changes
to tree. By Maksym Veremeyenko <verem@m1stereo.tv>.
- Windows build: add missing DLLEXPORT to some class declarations so user
programs build. By Maksym Veremeyenko <verem@m1stereo.tv>.
- Build: Fix detection of libwww, broken in 1.24.
- Build: Don't use trailing comma in enum; not accepted by some C++
compilers.
- Build: Add a user-defined default constructor for class callInfo to avoid
compilation failure with recent GNU compilers.
- Mac OS X build: include -install_name on library link so dependents
can find it automatically. Thanks Joshua Root (jmr@macports.org).
Release 1.26
Released 11.03.26.
Subversion directory release_number/1.26.00.
- Add output operator (operator<<) for xmlrpc-c::value::type_t.
- JSON serializer: eliminate trailing commas that Internet Explorer doesn't
like. Thanks Bo Lorentzen <bl@lue.dk>.
- JSON serializer: improve human readability of JSON. Thanks Bo Lorentzen
<bl@lue.dk>.
- Fix JSON integer parsing and formatting broken in 1.25.
- Build: Fix prototype/definition mismatch in libwww.cpp with some
compilers (e.g. Solaris).
- Build: Fix linking of xml-rpc-api2cpp with some linkers (e.g. Solaris).
Release 1.25
Released 10.12.30
Subversion directory release_number/1.25.00.
- Abyss server: Ignore content-type on received calls. (Used to fail
the call if it did say content-type: text/xml).
- Windows Abyss server: wait for next connection is interruptible, so
you can shut down the server without sending an extra RPC. Thanks
Maksym Veremeyenko <verem@m1stereo.tv>.
- Abyss XML-RPC server: Implement HTTP access control. Produce in POST and
OPTIONS responses Access-Control-Allow_Origin, Access-Control-Allow-Methods,
and Access-Control-Max-Age header fields, controlled by 'allow_origin',
'access_ctl_expires', and 'access_ctl_max_age' server parameters and XML-RPC
HTTP request handler parameters.
- Abyss XML-RPC server: Implement OPTIONS method. Includes Allow: Post.
(Used to return Method Not Allowed).
- Abyss: You can't screw up the HTTP header of the response by adding a
field with e.g. a newline in the field name with ResponseAddField().
- JSON parser: recognize "undefined" token. Render it as
(extended) XML-RPC nil type.
- JSON parser: integers are 64 bit instead of 32.
- C type xmlrpc_value: Add destructor capability to C Pointer.
- C++: Don't crash on attempt to use uninstantiated xmlrpc_c::value.
Throw error instead.
- Client: fix unpredictable behavior when your client pararameters
include "progressFn". Broken in 1.24.00.
- Client: fix garbage result returned by xmlrpc_client_call_server().
Introduced in 1.23.
- xmlrpc_serialize_json: fix incorrect serialization of string with \uXXXX
escaped character. Introduced in 1.24.
- xmlrpc_parse_json: fix interpretation of \uXXXX escape.
- xmlrpc_parse_json: Recognize \t .
- xmlrpc_serialize_json: Use \r, \t, etc. instead of \uXXXX where possible.
- 'json' example program: Fix junk in output.
- Build: Build DLLs for Windows.
Release 1.24
Released 10.09.26
Subversion directory release_number/1.24.00.
- Client calls a progress function so you can e.g. display a progress bar,
if you use the Curl transport. Client parameter progressFn and
xmlrpc_c::rpc virtual method 'progress'.
- CGI XML-RPC server accepts (ignores) parameters after "text/xml"
in Content-type header from client.
- Privatize implementation of clientXmlTransportCurl::constropt and
clientXmlTransportPstream::constropt to add run-time forward compatibility.
- xmlrpc_serialize_json: Don't include terminating NUL in the output. (This
makes it consistent with the XML serializer and also is more logical).
- Fix bug in xmlrpc_serialize_json: doesn't escape (\uxxxx) all the
necessary characters. Thanks Bo Lorentsen .
- Build: Replace <sys/signal.h> with standard <signal.h>.
- Installation: install <xmlrpc-c/json.h>.
Release 1.23
Released 10.06.29
Subversion directory release_number/1.23.00.
- C++: Add parseCall(), generateResponse().
- Curl client transport: Add ability to talk through an HTTP proxy.
- Client: improve error message when you specify the parameter list
argument as something other than an array.
- Abyss: terminate after current request, not current connection.
(Matters with keepalive).
- C++ bytesFromBase64(): fix bug: high two bits always zero. Broken since
created (2005).
- Fix bug in XML parsing from 1.21.
- Fix error message about invalid <int> XML.
Release 1.22
Released 10.03.28
Subversion directory release_number/1.22.00.
- Add JSON serializer/deserializer for xmlrpc_value. (Not used in any
client or server facilities). Idea and original working code from Bo
Lorentsen .
- Add 'cbytestring', 'carray', and 'cstruct' types for convenience.
- Abyss: Fix handling of timeout and interrupted wait for data/request from
client, including assertion failure. Introduced in 1.18.
- Fix rejection of all negative integers when compiled with certain
compilers, introduced in 1.07.
- Windows wininet client XML transport: don't time out after 30 seconds.
- Add xmlrpc_parse_value_xml() for completeness.
- Abyss on Windows: fix missing channel info.
- Cygwin install: fix failure of install of DLL.
Release 1.21
Released 09.12.31
Subversion directory release_number/1.21.00.
- Add XMLRPC_TRACE_CURL environment variable to control
CURLOPT_VERBOSE on the Curl Client XML transport.
- Add 'dont_advertise' Curl transport option for C and C++. Default
is now to include User-Agent header.
- Windows Abyss: fix occasional crash when thread terminates.
- Windows build: various fixes to accomodate recent code updates.
- Build: works on older HP-UX and Interix, which have strtoq
and __strtoll instead of strtoll.
- Build: fix bug on system without regex.
- Build: works on Unix systems that don't have <sys/select.h >
(and don't need it).
- Build: works on Interix.
- Some Expat bug fix.
Release 1.20
Released 09.09.30.
Subversion directory release_number/1.20.00.
- xmlrpc_value type: add xmlrpc_datetime_new() and xmlrpc_read_datetime(),
which use new type xmlrpc_datetime.
- Accept additional (non-XML-RPC) forms of <dateTime.iso8601> in
received messages: YYYYMMDD[T]HHMMSS[Z], YYYYMMDD[T]HHMMSS[+-]hh,
YYYYMMDD[T]HHMMSS[+-]hhmm
- Fix User-Agent, Server HTTP headers.
- Build: fix compile failure with some compilers: extra qualification
in src/cpp/server_pstream_conn.cpp
- C++ CGI server: fix bug: library is empty or won't build.
- Server: fix memory leak when add of method to registry fails.
- Abyss: fix memory leak with ServerCreateSocket().
- Abyss: fix memory leak when you reset basic authentication data in
server info.
- Abyss: fix tiny memory leak per server.
Release 1.19
Released 09.06.29.
Subversion directory release_number/1.19.00.
- Abyss C++ XML-RPC server: Add ability to run a multithreaded server
that doesn't take over the process' signals: Add
serverOwnsSignals and expectSigchld constructor options
and sigchld method for class xmlrpc_c::serverAbyss.
- Packet stream server: Add 'callInfo_serverPstream' class and ability to
get the socket address (IP address) of the client in the XML-RPC method. Also
the ability to pass arbitrary call info through a serverPstreamConn server.
- C++ Abyss XML-RPC server: Add 'callInfo_serverAbyss' class and
ability to get the session and server handle in the XML-RPC method.
This includes IP address of the client.
- C++ server: Add 'method2' and 'callInfo' class so the XML-RPC
method can get information about how the call arrived.
- C Abyss XML-RPC server: Add xmlrpc_server_abyss_set_handler2(),
so you can supply your own code to do the XML-level RPC execution.
- Windows: Build Xmlrpc program (generic XML-RPC client), named
xmlrpcclient.exe.
- Windows Abyss: remove debugging trace message.
- Abyss: put more detail in the HTTP error response.
- Curl client: don't do the Expect/Continue thing (because some servers --
in violation of HTTP -- don't do it).
- Add xmlrpc_c::value::cvalue().
- Add xmlrpc_c::paramList::addc(), toValue(), fromValue().
- Abyss: fix memory leak from 1.18.
- C++ forking Abyss server: use SIGCHLD properly.
- Abyss XML-RPC server: fix crash (wild memory access) when tiny memory
allocation fails in creating the server.
- Abyss: Don't export Base64Encode() anymore. It causes a namespace
collision with ImageMagick and isn't really a legitimate part of Xmlrpc-c.
- Build: Recognize platform names that contain "linux-gnu",
such as linux-gnueabi and linux-gnulp. Treat them the same as
plain "linux-gnu".
- Build: get tools/lib/dumpvalue.o from the build directory, not the
source directory.
- Build: Fix for systems without Unicode wchar_t.
- Build: Declare many files to be _XOPEN_SOURCE 600 so that they compile on
Solaris 10 (with the Sun C99 compiler).
Release 1.18
Released 09.03.31
Subversion directory release_number/1.18.00.
- Packet stream server: add run method (runs all RPCs on a
connection until it closes).
- Packet stream server: add runOnceNoWait method.
- Packet stream server: hide implementation, for forward compatibility.
This change is not backward compatible, so the major number of all C++
libraries changes.
- Abyss XML-RPC: Remove quotes from 'charset="utf-8"' in
content-type header. Some clients don't like it.
- Abyss: Handle invalid timeout values for keepalive or connection
read timeout better.
- Abyss: add trace, log messages.
- Fix invalid XML generated for <double> for some values and CPUs.
Broken in 1.15.
- Abyss: fix assertion.
- <xmlrpc-c/base.h>: include <sys/time.h< instead of
<time.h>, avoiding warning.
- Server: Fix crash when you call system.methodExists or system.methodHelp
with bad arguments.
- Server: Fix signature that system.methodSignature returns for
system.methodSignature.
- Abyss: Fix format of log line.
- program 'xmlrpc': Remove extraneous 'Value:' from output.
- Add --enable-tools option to Configure.
- Build: fix missing -fPIC on C++ shared library module compiles.
Broken in 1.17.
- Build 'xmlrpc_pstream' by default if Configure determines -lncurses
and -lreadline exist.
- Build: add build of shared libraries for FreeBSD. Do it the same as
for NetBSD.
- Build: include missing <iostream> in xmlrpc_pstream.cpp.
- Build of C++ test program: include missing <cstring> and
<cstdlib>.
- Build: Fix parallel make failures due to missing dependencies.
- Build: builds on Cygwin.
- Build: Fix shared library dependencies and link orders (Cygwin cares).
- Build: Windows build fixes.
Release 1.17
Released 08.12.29.
Subversion directory release_number/1.17.00.
- Packet stream server: work on Windows. This change is not binary
backward compatible -- old libxmlrpc_packetsocket users can't use new
libxmlrpc_packetsocket.
- C++ server: fix reference to freed storage in registry::addMethod(),
introduced in 1.16.
- Windows Abyss: fix bug: connection not closed.
- Build: Fix recognition of Darwin platform (via HOST_OS environment
variable).
- Build: Fix link options for shared library on Darwin.
- Build: Fix undefined reference to xmlrpc_strcaseeq().
- Build: Put link options in right order. Thanks
Peter Alfredsen .
- Build: Add missing <cstdlib> include to server_cgi.cpp. Thanks
Peter Alfredsen .
- Build: fix "extra qualification" syntax error in server_cgi.cpp.
Thanks Peter Alfredsen .
- Build: C++ shared libraries: fix dependencies so link is dependent on
xxx.so, not xxx.a. Otherwise, the -lxxx in the link finds xxx.a instead of
xxx.so, which fails to generate the proper prequisite and causes link to
fail on some systems because .a is not position independent code (-fPIC
problem).
- Make configure --disable-abyss-server disable the C++ version of the
library as well as the C version. Thanks Peter Alfredsen
.
- Build: Use CFLAGS environment variable to add options to all
compiles. They go after the built-in non-I options and before the
built-in -I options. CFLAGS_PERSONAL and CADD still exist and go at
the very end.
- Build: Don't use 'uint' type; some relevant systems, e.g. Solaris,
don't have it.
- Build: Fix windows compile.
- Build: Fix infinite recursion with some Makes, trying to build
xmlrpc-c-config.test.
- Build: Add missing dependencies to C++ shared library builds.
Parallel make works again; automatic run-time link does too.
- Build: fix build of various programs in tools/ : create srcdir and
blddir. Broken in 1.15.
- Build: make clean, dep work on tools/lib. Broken in 1.15.
Release 1.16
Released 08.09.27.
Subversion directory release_number/1.16.00.
- Add C++ CGI server facility: libxmlrpc_server_cgi++.
- Add ability to set stack size for a method function in an XML-RPC
Abyss server and for an Abyss HTTP request handler. Default stack
size in an Abyss connection handler thread remains about 128K.
- Abyss: fix bug with closes of arbitrary files due to
terminating uninitialized terminator pipe. From 1.15.
- Abyss: fix bug reading configuration file.
- C++ client: fix bug: timeout on finishAsync() doesn't work because
xmlrpc-c::timeout not constructed properly.
- Abyss: remove bogus assertion. In non-default builds, may cause
crash.
- xmlrpc-c-config: fix bug: c++2 server-util doesn't get
libxmlrpc_server++.
- Build: various Windows fixes.
- Build: remove extra qualifier that causes C++ compile to fail.
From 1.15.
- Build: new LIBXMLRPCPP_NAME make variable specifies alternate name of
libxmlrpc++ so as not to conflict with XmlRpc++ package.
Release 1.15
Released 08.06.28.
Subversion directory release_number/1.15.00.
- Apache XML-RPC dialect works. It never worked before because it used
ex.i8 instead of ex:i8 and omitted the xmlns attribute when sending.
- Add system method system.capabilities. Provides information about
capabilities of the XML-RPC server.
- Add 'xmlrpc_pstream' (generic client for packet stream XML-RPC).
Not built or installed by default.
- Improve fault string for invalid XML-RPC received by client as a
response.
- Abyss XML-RPC server: when shutdown not enabled, response to
system.shutdown is "not enabled" instead of "not
possible". Always overrides user-supplied shutdown function in
registry.
- Abyss: fix bug which prevents immediate termination.
- Abyss: fix bug when you build a server out of an existing listening
socket. Doesn't wait for a connection.
- Abyss Windows: fix infinite loop when send() fails.
- Fix bug: <double> sometimes is exponential, e.g. 1.2E40.
- Properly parse <double> regardless of locale.
- C++ client: Fix setInterrupt() method.
- Curl client: fix Curl timeout option.
- Curl client: don't issue bogus warning to stderr when async
finishing function gets interrupted or times out.
- Client: fix buffer overrun in xmlrpc_server_info_set_user().
- xmlrpc-c-config: put Curl and Libwww libraries in proper order for
static linking.
- Fix bug: xmplrpc.parse.c won't build in some environments because
<float.h> is not included.
- Fix some of shared library build on Cygwin.
- Build: Fix "not enough arguments" error with
curl_easy_setopt() defined as a 3-argument macro in some Curl.
- Build: install correct xmlrpc_abyss.h backward compatibility symlink,
not xmlrpc_server_abyss.h.
- Windows build: add version.c.
- Windows build fixes.
- Don't use // comments.
Release 1.14
Released 08.03.27.
Subversion directory release_number/1.14.00.
- Abyss: Wait for client connection is interruptible; ServerTerminate()
interrupts the wait so as to take effect immediately instead of after
the next connection arrives.
- XML-RPC Abyss server: system.shutdown interrupts wait for client
connection, so you don't have to execute it twice.
- C XML-RPC Abyss server: Add explicit xmlrpc_server_abyss objects, so
you can shut down a server from inside the server process, but outside
the server -- with a signal handler or separate thread.
- Packet stream server: Add interruptible version of
serverPstreamConn::runOnce()..
- C++ Client: Do Digest, GSS-Negotiate, and NTLM HTTP authentication in
addition to Basic. Curl transport only.
- Client: Fix HTTP basic authentication: remove extraneous colon from
HTTP header. Bug introduced in 1.13.
- Packet socket (pstream client, server): fix bug: sending fails
when socket is "full" so you can't write any more to it
right now.
- Abyss: Handle Expect: 100-continue header from client, as required
by HTTP.
- Abyss: Fix timeout failure when body of HTTP request does not contain
an LF, and request munging when body starts with space or tab.
- Abyss: fix uninitialized variable when trivial memory allocation fails.
- Windows Abyss: fix wait for data on socket.
- Fix various compile errors with some C++ compilers: "extra
qualification," missing virtual destructors, missing <cstdlib>
include.
- Use <sys/time.h> instead of <time.h> to prevent compile
failure in select.c.
- Use different form of -Wl compiler option on Solaris to avoid build
failure.
- Remove reference to alloca(), not available on Solaris 10 with
Sun One Studio without additional #include (of <alloca.h>).
- Windows build: fix undefined 'vsnprintf' on VS2003.
- Windows build: fix undefined 'strcat_s', 'wcscat_s' on VS2003.
- Windows build: fix undefined intptr_t on VS2003.
- Install: fix bug: <xmlrpc-c/packetsocket.hpp> and
<xmlrpc-c/server_pstream.hpp> not installed.
Release 1.13
Released 07.12.27.
Subversion directory release_number/1.13.00.
- Make it build on Windows.
- C++ Client: Make interruptible; add setInterrupt method.
- Add interrupted_client example program.
- Server: Implement system.shutdown on C++ server.
- Client: Add 'timeout' parameter to Curl transport (does CURLOPT_TIMEOUT).
- C Client: Do Digest, GSS-Negotiate, and NTLM HTTP authentication in
addition to Basic. Curl transport only.
- Add xmlrpc_cpp_proxy, which is the same thing as
xml-rpc-api2cpp except that it uses the modern C++ classes
instead of the old wrapper classes.
- xml-rpc-api2cpp: generate code that doesn't assume 'std' namespace.
- xml-rpc-api2cpp: Don't put NUL characters in generated code.
- xml-rpc-api2cpp: Recognize upper case data type names in
system.methodSignature response, e.g. BOOLEAN.
- xml-rpc-api2cpp: fix bug when system.methodSignature says
"I don't know."
- Remove 256 character limit on fault string in xmlrpc_env.
- xmlrpc-c-config: Don't include libabyss in pstream server link.
- C++: Add isInstantiated() method to xmlrpc_c::value class.
- C++ Abyss server: fix bug when creation of Abyss server fails.
- Abyss: when we fail to create a channel switch from a socket, tell why.
- Abyss: Fix error message: socket _is_ connected, not _is not_ connected.
- Remove query-meerkat and meerkat-app-list example programs; the Meerkat
server no longer exists.
- Added some missing #includes to C++ files; newer Gcc is picky about this.
- Builds/runs with older libcurl without curl_multi_strerror().
- Install does not create broken backward compatibility symlinks.
- distclean removes srcdir, blddir from src/cpp/test .
Release 1.12
Released 07.09.26
Subversion directory release_number/1.12.00.
- Add 't' format specifier for time_t conversion of a datetime.
- xmlrpc_env_set_fault(), etc. take garbage input and produce valid
UTF-8 XML fault string so it can't break an XML-RPC response.
- Add xmlrpc_force_to_utf8().
- Modify the packet socket protocol to mark both beginning and end of
packets. NOT BACKWARD COMPATIBLE (but probably not used by anybody).
- Fix crash in xmlrpc_method_create() with signature and Gcc 4.1,
due to improper pointer aliasing.
- Fix incorrect error message when Curl fails to perform HTTP transaction
(was: "HTTP response: 0").
- Fix wild pointer with C++ xmlrpc_c::rpc::start(). (storage containing
call XML gets freed before XML transport uses it).
- Fix memory leak: one per method added to method registry.
- Expat: Add xmlrpc_XML_GetErrorString() and some much improved
error information.
- Remove last use of Libtool.
- Build: recognize as MacOS X where 'configure' generates
HOST_OS=darwinXXX instead of just plain 'darwin'.
- Build: include <sys/time.h> and <time.h> to define
struct timeval and struct timespec.
- Build: fix link order for 'xmlrpc' program.
Release 1.11
Released 07.06.27
Subversion directory release_number/1.11.00.
- Add packet stream client and server -- a variation on XML-RPC that
uses a simple long-lived stream socket connection between client and
server instead of HTTP. Less overhead, less complexity, and ability
to maintain state with partner.
- Add terminate() method to xmlrpc_c::serverAbyss.
- Accept <i1>, <i2> as alternative XML-RPC
representation of integer values. Accept Apache <ex.i1>,
<ex.i2>, <ex.i8>, and <ex.nil> as alternatives for
the obvious types.
- Add xmlrpc_serialize_value2() so you can generate the Apache
dialect (<ex.nil> and <ex.i8>). Also
xmlrpc_serialize_params2(), xmlrpc_serialize_call(), and
xmlrpc_serialize_response2(). Add dialect client parameter and
xmlrpc_registry_set_dialect(). Also a dialect parameter on client_xml
C++ class and registry::setDialect().
- Clean up line delimiter issues with XML-RPC strings. Fix some
minor problems. Always use LF for line delimiter in generated XML for
a string value. Add xmlrpc_string_new_lp_cr(),
xmlrpc_string_new_cr(), xmlrpc_read_string_crlf(),
xmlrpc_read_string_lp_crlf(), xmlrpc_read_string_w_crlf(),
xmlrpc_read_string_w_lp_crlf(), xmlrpc_string_w_new_lp_cr(),
xmlrpc_string_w_new_cr(). In the C++ interface, add a
value_string constructor with a nlCode argument and add
a crlfValue() method to value_string.
- Curl client XML transport: Use Curl multi-manager for synchronous
RPCs to make them properly interruptible by signals. (Requires March
2007 update to libcurl to avoid delay of up to a second).
- XMLRPC_TRACE_XML: properly escape backslash.
- Abyss: Fix per-HTTP-request memory leak.
- Abyss: Fix infinite loop reading headers when buffer contains data
right up to the newline at the end of a header.
- ABYSS_TRACE_CONN: deal better with nonprintable characters.
- xmlrpc program: Do a fancier job of printing strings in the
response.
- Fix error message for too many structure members in a format string.
- Build: doesn't build tools and examples by default, so that problems
building them don't break a default build.
- Build: works on a system with no pselect(). (emulates with select()).
- Fix compilation failure in thread_fork.c when you configure with
--disable-abyss-threads.
- Build: De-libtool Expat.
Release 1.10
Released 07.03.28
Subversion directory release_number/1.10.00.
Release 1.09
Released 06.12.31
Subversion directory release_number/1.09.00.
Let C program create its own XML transport rather than have
xmlrpc_client_create() do it.
Move xmlrpc_limit_set() and xmlrpc_limit_get() from libxmlrpc_util
to libxmlrpc.
Add XMLRPC_FAILF() for GNU compiler
Server: Fix crash with multi-thread server due to internal use of
xmlrpc_value. Use regular C data structures instead of xmlrpc_value
for method registry.
Server: fix failure of default method.
Release 1.08
Released 06.11.14
Subversion directory release_number/1.08.00.
- Fix build with all client XML transports (and therefore all client
code) disabled.
- Fix client::start() type mismatch causing compiler warning.
- Change exported symbol names in libxmlrpc_xmltok to have
"xmlrpc_" prefix so as not to collide with separate Expat or
libwww library.
- Fix a bunch of duplicate make rule problems.
Release 1.07
Released 06.10.11
Subversion directory release_number/1.07.00.
New Features
- Add 64 bit integer type XMLRPC_TYPE_I8 with XML-RPC representation
<i8> (XML-RPC extension).
- A user's method function in an Abyss server can now tell the IP
address and port of the client. Added SessionGetChannelInfo(),
ServerRunChannel().
- Registry services: Add xmlrpc_method2 type, xmlrpc_registry_add_method2(),
xmlrpc_registry_process_call2(). These allow a server to pass information
about the circumstances of a call (e.g. IP address of caller) to a method
function.
- Add detail to xmlrpc_decompose_value() error messages.
- Include library prerequisite information in shared libraries. One
thing this fixes is it lets you use a program that was link-edited for
Xmlrpc-c 1.03 with a 1.07 library without unresolved references.
Fixes for Use-time Bugs
- Abyss crashes when client sends garbage instead of an HTTP
request.
- xmlrpc_decompose_value() leaks memory when it fails. (Total
rewrite).
Build Fixes, Enhancements
- Build: Add ability to build in directory separate from source.
- Build: Add some missing dependencies and some extra ones to make
parallel make work.
- Use PIC (position indepdendent code) for C++ shared libraries.
(All other shared libraries already did). This means it works on 64
bit Linux.
- Build: Fix order of -l options for xmlrpc and xmlrpc_transport.
- Build: Add missing dependency on transport_config.h to make file for
src/cpp to fix build failure.
- Build: Remove space between -L and value in make file.
- Build: De-libtool Abyss.
Release 1.06
Released 06.07.13
Subversion directory release_number/1.06.00.
New Features
- Add system.shutdown method.
- Add ServerTerminate(), ServerResetTerminate().
- Add URI path control (i.e. it doesn't have to be "/RPC2")
to Xmlrpc-c Abyss server facilities.
- Abstract Abyss socket layer; introduce TChannel and TChanSwitch types.
Fixes for Use-time Bugs
- BJH: Fix xmlrpc_client_call_asynch(): wrong sense of env.fault_occurred
check.
- Change exported symbol names in libxmlrpc_xmlparse to have
"xmlrpc_" prefix so as not to collide with separate Expat
library.
Build Changes
- BJH: Restructure threading facility in Abyss.
- BJH: Use strsol constant to eliminate crashes due to out of memory.
- BJH: fix HAVE_UNICODE_WCHAR.
- BJH: Use xml2-config instead of pkg-config to find Libxml2.
- BJH: Make build with external libxml2 work.
- BJH: fix make rule for srcdir, blddir to work with broken Make.
- BJH: Fix distclean so it removes srcdir and blddir in cpp/ .
- BJH: Remove Expat sample program directory. Xmlrpc-c's production use
of Expat is an adequate example.
- BJH: Remove last autoconf-generated make files (expat).
- BJH: add -Wundef Gcc compile option.
Release 1.05
Released 06.03.29
Subversion directory release_number/1.05.00.
New Features
- BJH: Add run-once and inetd forms of server.
- BJH: Add create() and availableTypes() class methods for
clientXmlTransport_http.
- BJH: Keepalive (persistent connections) works in Abyss. Before, Abyss
defaulted to single-request connnections unless the client requested
otherwise. For HTTP 1.0, that is correct, but for HTTP 1.1, the opposite
is correct. Also, there was some screwy connection between chunking
the response and keepalive, and the code was messy enough that there
could have been a variety of other bugs.
- BJH: XML-RPC Abyss request handler never chunks response. Previously,
it normally didn't, but did sometimes, depending somehow on whether the
connection was going to be kept alive.
- BJH: Abyss XML-RPC server accepts (ignores) parameters after
"text/xml" in Content-type header from client.
- BJH: serverAbyss: Add runOnce() and runConn() methods. Move most
of run() method to constructor.
- BJH: Proper global constant initialization (e.g. curl_global_init(),
curl_global_cleanup()) in client libraries. clientGlobalConstant class.
- BJH: Make C++ registry an autoobject.
- BJH: Remove old, broken RPM spec file.
- Mike Goddard: in Xmlrpc-c-config, allow libwww-client as synonym
for client, for backward compatibility.
- BJH: Abyss: Create a non-global-variable option for MIME types.
- BJH: Abyss: Add MIMEType_term to go with MIMEType_init().
- BJH: improve handling of nonprintable characters in XMLRPC_TRACE_XML
output.
- BJH: Change default minimum argument on paramList::getDouble() from
DBL_MIN to -DBL_MAX.
Fixes For Use-time Bugs
- BJH: Eliminate memory leak caused by MIMETtype_init: one leak per program.
- BJH: Fix memory leak in C++ client result value - one leak per RPC.
- BJH: Fix memory leak in C++ client parameter list - one leak per RPC.
- BJH: Fix memory leak in server method registry -- one leak per registered
method.
- Daniel Dlab: Correct INTERNET_FLAG_IGNORE_CERT_DATE_INVALID to
ERROR_INTERNET_SEC_CERT_DATE_INVALID in Wininet transport.
- BJH: Fix Abyss' identification of the server software in the web pages
it generates to reflect the fact that it is the Xmlrpc-c fork of Abyss.
- BJH: Fix memory leak in Curl transport SSL certificate password option.
- BJH: Fix memory leak in Abyss handler registration.
- BJH: Fix memory leak in method registry - one leak per RPC.
- BJH: Fix memory leaks in XML parsing (error paths).
- BJH: Fix memory leak in struct set functions.
- BJH: Fix memory leak in wide character constructor functions.
- BJH: Fix timeouts on Abyss HTTP header read.
<Miscellaneous Changes
- BJH: Fix signature in xmlrpc_sample_add_server C++ example program.
- BJH: Fix build of transport_config.h
- BJH: beginnings of libtool-less shared library building for C++
libraries. Fully implemented for Linux only.
Release 1.04
Subversion directory release_number/1.04.00.
Released 05.11.24
New Features
- BJH: New shared (reference-counted) pointer classes for C++ client classes.
- BJH: New ServerAccessor class for C++ clients for more convenient
RPC-calling code.
- BJH: Add xmlrpc_parse_response2().
Unlike xmlrpc_parse_response(), it distinguishes between failure to
parse and a response that indicates an XML-RPC failure.
- BJH: Change Curl transport to use the Curl multi facility (Curl
internal threads) instead of pthreads. Simpler, better matched to the
Xmlrpc-c user interface, and timeouts now work.
- BJH: Remove curl_global_cleanup() so that multiple simultaneous
Curl client XML transports per process are essentially
possible and they don't interfere with other process use of
Curl.
- BJH: Add a mess of SSL detail controls for Curl: 'sslversion',
'ssl_cert', etc.
- BJH: Add ability to make an Abyss server out of an already bound
socket.
- BJH: Add d/ (double) to Xmlrpc. Thanks Alistair John Strachan
<s0348365@sms.ed.ac.uk>.
- BJH: New Curl C++ transport constructor that takes options using the
constrOpt().opt1(value1).opt2(value2) paradigm.
Fixes For Use-Time Bugs
- BJH: meerkat-app-list example program: remove NUL character from
time period parameter.
- BJH: Fix use of uninitialized 'name' member in Abyss ServerCreate().
- BJH: Serialize access to synchronous Curl session in Curl client
XML transport (to avoid crashes with multiple threads).
- BJH: fix use of pthread_mutex_t in girmem.hpp, so it can be used in
a Windows program.
- BJH: Make Abyss work with short writes to sockets. Thanks
Alistair John Strachan <s0348365@sms.ed.ac.uk>.
- BJH: Fix xmlrpc-c-config --version.
- BJH: Fix Curl transport bug: arbitrary values for SSL verify options.
- SAB: Fix for Windows what broke between 1.02 and 1.03.
- SAB: Fix incorrect result of xmlrpc_read_string_w() (wrong-size memcpy()).
- BJH: Fix xmlrpc-c-config --client missing -l options.
Build, install changes
- BJH: Include <stdlib.h> instead of <malloc.h>, which
doesn't exist in some environments.
- BJH: Fix make file so it installs libxmlrpc_abyss.
- BJH: Install client_simple.hpp interface header file.
- BJH: Add xmlrpc_c::base64FromBytes(), xmlrpc_c::bytesFromBase64().
- Mike West: Don't include tools/xmlrpc and tools/xmlrpc_transport
in the build if client library configured out.
- BJH: Remove 'cpptest' from default make.
- BJH: Always install using the bundled install program, instead of
trying to find another install program on the system. And use the
aforementioned bundled install program correctly.
- BJH: when installing legacy header symlinks, remove old names first.
- BJH: Don't try to build C++ tools if C++ libraries not built.
- BJH: Don't try to build Abyss example programs if Abyss libraries
not built.
- BJH: Fix conditional build for wide character (Unicode) stuff.
- BJH: Change a "state" to "enum state" to avoid
a mysterious AIX compile failure. Add a "const" to a prototype
to avoid erroneous AIX compile failure.
- BJH: Remove variable argument macros, not available on some AIX.
- BJH: Fix for libxml2, no curl builds. make clean cleans test directory
Internal Changes
- BJH: Privatize most of the lower layers of Abyss -- move them out
of the public interface header file abyss.h.
Release 1.03
Released June 26, 2005.
Subversion directory release_number/1.03.00.
- BJH: New C++ libraries designed for pure C++ applications
(Application never sees the underlying C structures or reference
counts).
- BJH: Make Curl do cookies (session only) and persistent connections.
This is only for calls through the synchronous interface, and the
synchronous interface is no longer thread safe -- you can have only
one thread making calls through it.
- BJH: Add Curl SSL_NO_VERIFYPEER, SSL_NO_VERIFYHOST control.
- BJH: Add User-Agent to Curl transport, Xmlrpc program.
- BJH: libwww transport does not do the weird handling of the "auth"
cookie. It used to have a global cookie (one cookie shared by all
servers) called "auth", which it maintained in an environment
variable.
- BJH: interface header files renamed from xmlrpc_xxx to xmlrpc-c/xxx
(old names installed a symbolic links for backward compatibility).
- BJH: libxmlrpc_server_abyss: Add ability to set the /RPC2 handler
without also setting default handler, and to set handlers for files
other than /RPC2.
- BJH: libxmlrpc_server_abyss: Eliminate global variable for registry
handle.
- BJH: Abyss: allow user's request handlers to have context
(Add URIHandler2 type).
- BJH: Add xmlrpc_datetime_new_sec(), xmlrpc_read_datetime_sec().
- BJH: Builds on AIX - new __inline definition, uint32_t instead of uint32,
et al.
- BJH: Don't build client library if not building any client XML
transport.
- BJH: Fix bug: xmlrpc_serialize_base64_data() doesn't free working
storage.
- BJH: Fix mysterious disablement of forking Abyss (ServerRunForked()).
- BJH: Fix bug: 'make install' doesn't install libxmlrpc_xmltok.
- BJH: Renamed CGI stuff, add non-builtin-registry style of CGI server.
- BJH: Break up 'rpctest', rename to 'test'.
Release 1.02
Released April 4, 2005.
Subversion directory release_number/1.02.00.
- SAB: Win32 http.sys server: Add new project and sample as
an alternative to Abyss on current Win32 platforms. Does
basic authentication and SSL. Requires recent Platform SDK to
build.
- BJH: Add xmlrpc_int_new(), xmlrpc_read_int(), etc.,
xmlrpc_decompose_value()
- BJH: Add nil (<nil>>, XMLRPC_TYPE_NIL) capability.
- SAB: WinInet Transport: Add Ignore Invalid SSL certs option.
- BJH: Add 'network_interface' option to Curl transport.
- BJH: Add basic authentication to 'xmlrpc' program.
- BJH: Add 'xmlrpc_transport' tool.
- SAB: Improve use of libCurl in Win32. Add documentation
and alter some project and configuration files.
- BJH: Add transport-specific options.
- BJH: Use GNUmakefile to catch non-GNU make
- BJH: Fix usage message in xmlrpc-c-config.
- BJH: Curl transport: check for failure of Winsock startup.
- BJH: Fix memory leak in Curl - not freeing curlTransaction.
- SAB: WinInet Transport: Fix bad authentication header.
Release 1.01
Released January 8, 2005.
Subversion directory release_number/1.01.00.
- SAB: Windows works again; new build strategy.
- BJH: Abyss: Add ConnCreate2() with foreground capability.
- BJH: Abyss: Add ServerRunOnce2() with foreground capability.
- BJH: Abyss: Fix ServerRunOnce().
- BJH: Add xmlrpc_server_abyss().
- BJH: Abyss pthreads is default
- BJH: Clean up client transport multiplexor
- BJH: Separate out server registry stuff into new libxml_server.
- BJH: Examples/Makefile uses new xmlrpc-c-config.test so as to be a
better example.
- BJH: Fail when structure format specifier does not end in
"*" instead of just asserting that it does.
- BJH: Fail when structure format specifier is not closed by "}"
instead of just asserting that it is.
- BJH: Add xmlrpc_array_read_item().
Release 1.00
Released October 25, 2004.
Subversion directory release_number/1.00.00.
- New modular client XML transport structure. Curl and Wininet transports
(in addition to existing libwww).
- Bryan Henderson: create Makefile.config; make examples/ directory use
static make file.
- Bryan Henderson: replace Makefile.am with already built Makefile.in.
- Peter Astrand: make it compile with Gcc 3.1.1.
- Joe Shaw: Can use libxml2 instead of libexpat.
- Bernhard Herzog: const fixes
- Stephen Blackheath: ./configure piece of building Abyss
with pthreads.
- Jeff Dubrule: Removed C++ comments from expat.
- Patrick Boykin: Facility to copy xmlrpc_server_info structs.
Release 0.9.10
Released June 30, 2001.
All work by Eric Kidd except where specified otherwise.
- Man pages!
- Debian packages!
- Jeff Stewart: NT CGI fixes.
- Andy Maloney: Win32 xmlrpc_win32_config.h fixes.
- Mike Bytnar: Solaris build fixes. Thanks!
- No more 'CVS' directories lurking in the dist tarball.
- Disabled rpath stuff so we comply with Debian policy.
- wchar_t code can now be disabled.
- New interop server.
- Parts of an interop client.
- Lots of interop fixes.
- Other stuff.
Release 0.9.9
Released April 30, 2001
All work by Eric Kidd except where specified otherwise.
- xml-rpc-api2cpp now generates usable proxy classes.
- Luke Howard: Default method capability.
- Abstract XML parser API (but you'll need to edit makefiles to use it).
- Implemented a configurable size limit for XML data off the network.
- Ability to build and parse XML-RPC values using wchar_t strings.
- Basic UTF-8 handling: Refuse to process invalid UTF-8 from network,
print warnings when sending invalid UTF-8 *to* network.
- Highly robust UTF-8 validator, decoder, encoder.
- Modularized the build system--build only what you need.
- Integrated Electric Fence into build system (optional).
- Fixed all recent, reproducible bugs in CVS. These were generally
Windows build bugs.
- Andy Maloney: Build fixes for Windows.
- Mike Bytnar: Build fixes for Solaris.
- RedHat 7 warning fixes.
Release 0.9.8
Released February 19, 2001.
All work by Eric Kidd except where specified otherwise.
- J. Alan Eldridge, Rosimildo daSilva: Build fixes.
- Send 'encoding="UTF-8"' in XML prologue.
Release 0.9.7
Released February 14, 2001.
All work by Eric Kidd except where specified otherwise.
- SECURITY: Configurable nesting limits (see advisory 1) to prevent
denial-of-service attacks and stack overflow.
- Alex Olugbile: Win32 build fixes.
- Luke Howard: Function name fix.
Release 0.9.6w
Released February 02, 2001.
All work by Eric Kidd except where specified otherwise.
- Merged Win32 VC/C++ changes from Alex and Ian.
- Merged Win32 Cygwin changes from Rosimildo daSilva
Release 0.9.6
Released January 30, 2001.
All work by Eric Kidd except where specified otherwise.
- Fixed lots of gcc warnings.
- Added a new 'xmlrpc_server_info' class, which allows you to
set options on a per-server basis.
- HTTP Basic authentication.
- Added internal implementation of system.multicall, lots of brutal test
cases, and stubs for other system.* commands.
- Added APIs for accessing CGI and Abyss method registries.
- Implemented system.listMethods, system.methodHelp, system.methodSignature.
- Fixed stupid bug in parsing of "(ss*)"-style array descriptions
where there were no extra elements.
- Added highly experimental hacked copy of mod_gzip into the
tools/turbocharger directory. This version does gzip *and* deflate!
- Added xml-rpc-api2txt, since XML-RPC doesn't have any IDL language.
- Merged in Ilya Goldberg's libwww/SSL setup code.
Release 0.9.5
Released January 20, 2001.
All work by Eric Kidd except where specified otherwise.
- Bug fix: Make sure CGI-based servers send correct content-length.
Release 0.9.4
Released January 18, 2001.
All work by Eric Kidd except where specified otherwise.
- Services for CGI-based servers.
Release 0.9.3
Released January 14, 2001.
All work by Eric Kidd except where specified otherwise.
- Works with Libwww 5.2.8, even when linked against expat.
- Added xmlrpc_value_type and XmlRpcValue::getType functions.
- Miscellaneous API tweaks to discourage writing of incorrect programs.
Should not affect any correct programs.
Release 0.9.2
Released January 12, 2001.
All work by Eric Kidd except where specified otherwise.
- Improved error messages.
- Refuse to link against libwww if it was built with expat.
Release 0.9.1
Released January 09, 2001.
All work by Eric Kidd except where specified otherwise.
- Integrated Rick Blair's fix to speed up libwww client.
- Added informative URLs to Meerkat example programs.
- Hid the implementation details of xmlrpc_value, just to keep
people honest. (No more dangerous allocation on the stack!)
- Minor C++ code cleanup after buying modern C++ books.
- Documentation improvements.
Contributors
These contributors are referred to above by initials:
- BJH
- Bryan Henderson <bryanh@giraffe-data.com>
- SAB
- Steven A. Bone <sbone@pobox.com>
These contributors are referred to above by full name:
- Peter Astrand
- Joe Shaw
- Bernhard Herzon
- Stephen Blackheath
- Jeff Dubrule
- Patrick Boykin
- Jeff Stewart
- Andy Maloney
- Mike Bytnar
- Luke Howard
- J. Alan Eldridge
- Rosimildo daSilva
- Alex Olugbile
- Ilya Goldberg
- Rick Blair
These are other contributors of unknown date:
-
Adrian Likins made lots of good, real-world suggestions for improvement.
-
Ian MacLean made patches from Alex's Windows port.
-
Brian Quinlan of the Active State company made lots of cool patches,
including preliminary wchar_t capability.