* Where unicode/ansi versions of a method exist, always
explicitly call one of unicode or ansi methods by
appending a 'W' or 'A' to the end of the method name.
Never omit the 'W' or 'A' because that will cause the
default method to be used which may vary according to
build flags.
* Prepend all Windows API method references with "::" to
indicate that the method names should be resolved from
the top-level namespace.
to communicate with subprocess and provides std::strings for
input/output/error.
Updated Command class with new execute() signature.
Added RedirectPipe (redir.hpp) to deal with handling
input/output/error pipes for a subprocess.
implementations to provide custom ActionList handlers.
This can be used, for example, to forward tun configuration
commands requiring higher privileges to a remote daemon.
* Added static polymorphic sink for print formatting in
print_formatted_detail::Output<T> where T can be
std::string or std::ostringstream
* By default printfmt() uses:
PrintFormatted<std::string> pf(fmt, 256);
* prune openvpn::to_string() methods prior to removal
(obsoleted by C++11 std::to_string())
(1) Create new versions of to_string() method:
(a) for numeric types, dispatch to std::to_string()
(b) for string, char, and nullptr_t types, handle directly
(c) for other types, use std::ostringstream
(2) Create vararg methods prints, print, and printd
for printing argument lists.
(3) Create method printfmt() with string formatting
similar to sprintf but fully type-safe.
usage: printfmt(<format_string>, args...)
options:
%s formats any argument regardless of type.
%r formats any argument regardless of type and quotes it.
%% formats '%'
1. Hash code is now compatible with VS 2015, so
HAVE_HASH_COMBINE can be removed.
2. Added OPENVPN_HASH_METHOD macro for defining std::hash<>
classes.
3. Make Hash::combine() into a varargs method.
data to the OpenVPN handshake (peer-info is a client -> server
key/value list that is part of the OpenVPN protocol). To
add peer-info key/value pairs, use ClientAPI::Config::peerInfo.
Incremented core OPENVPN_VERSION to "3.0.6".
a security check to ensure that untrusted content pasted into
multiline config file directives such as:
<cert>
. . .
</cert>
doesn't try to break out of the pseudo-XML block
by inserting its own </cert>.