Posix C++Posix C++Windows C++C++Changelog for PubNub C++ SDK


Modified
  • Introduce separate connection timer, to control/limit the duration of DNS resolving and connection establishment, which should be much shorter than full transaction timer, which has to be >5 min for subscribe

Fixed
  • Fix high CPU load in callback interface when no context, thus socket, is executing a transaction

Modified
  • Detect TCP/IP connect timeout in callback mode w/sockets - does not seem to work on Windows

  • Add set_proxy_none() to pubnub::context

Fixed
  • Proxy admin functions (set, get) were not protected by mutex/monitor, so caused a race condition

  • Setting new proxy might have been ignored until the resolved DNS addresses of the previous proxy expire.

  • If all resolved addresses on file expire, we would report transaction failure instead of just asking for new ones.

Modified
  • Improvements in sockets and DNS error reporting

Modified
  • Introduce Signals support

  • Support subscribe V2 in C++ & Qt

  • Add pubnub_stop() for graceful shutdown when using callback interface

Modified
  • Introduce minimal transaction timer duration

  • Use QTime for transaction timer duration

Modified
  • Use TTL from DNS response (cache resolved addresses)

  • Better identification of the platform we run on

  • Detect authenticating proxy that works incorrectly

Modified
  • Will try other address from (async) DNS response if first one fails

  • Will try secondary (async) DNS server if primary doesn't work

Modified
  • Update pubnub_allooc_std.c to pubnub_cancel() changes

Modified
  • Support Message Counts API

Modified
  • Support IPv6 for DNS resolution (mostly for callback interface)

Fixed
  • URL encode channel name(s)

Modified
  • Update samples to changes in pubnub_cancel() and other interface changes

  • Update samples to use time() instead of clock() as clock() can measure CPU-only time instead of real time

  • Update Qt functional tests and make them reliable

  • UUID is now part of the Pubnub context (instead of a pointer to it). This makes handling its lifetime easier, yet doesn't incur much memory increase

Fixed
  • C++ wrapper and Qt did not have proper multithreading support as they did not protect their data. Now that's fixed.

Fixed
  • Fix memory leak regarding OpenSSL

Modified
  • Publish can now be GZIPed (if done via POST)

Fixed
  • Publish via POST encrypted could publish garbage and fail

Modified
  • Publish can now be done via POST

Fixed
  • Several smaller DNS en/de/coding issues fixed

Modified
  • pubnub_await() in the sync interface now reports PNR_TIMEOUT on, well, (transaction) timeout

Fixed
  • DNS en/de/coding could fail on some toolchains because of alignment issues.

Fixed
  • TLS connection timeout was prone to errors due to time synchronisation and such.

Fixed
  • Fix wrong detection of PNR_TIMEOUT, by reset of TLS connect timer when connection is established.

Fixed
  • Fix DNS decoding

Added
  • Add support for pubnub_subscribe_v2() w/filter expressions

  • pubnub_cancel() returns is it done, or it just started the cancellation

  • Code that is only for TLS/SSL ifdef-ed out when not building w/TLS/SSL

  • Functional tests for C++ updated and now run on each commit

Fixed
  • Improved handling of lost connection while in HTTP Keep-Alive

Added
  • pubnub_free() now implies pubnub_cancel()

  • pubnub_cancel() will now call pbnc_fsm() in the sync interface. Combined with previous, this makes it possible to call pubnub_free() in sync interface and have it succeed even if transaction is ongoing.

Added
  • Removed (unused) option to ignore TLS/SSL errors

Added
  • Support HTTPS CONNECT proxy

  • Can set proxy via IP address and localhost

  • Adhere to Connection: close from server

  • Functional tests improved, can run concurrently

Fixed
  • Possible pointer out of bounds fixed in JSON parser

  • MacOS build fixed

Added
  • Support OpenSSL 1.1.x with callback interface

  • Add support for filter expressions on subscribe

  • Enable receiving GZIP-ed reply

Added
  • Enable setting HTTP Keep-Alive use on/off for C++ and Qt

Added
  • Enable reading system DNS on Windows

Fixed
  • Small fixes in system DNS reading/parsing

Added
  • Callback interface uses (our own) async DNS

  • Enable sending meta data when publishing

  • Enable setting norep (do not replicate) when publishing (with store=false, publish becomes "fire")

  • On MacOS, use SO_NOSIGPIPE to avoid SIGPIPE on the socket

Fixed
  • Small fixes for async DNS

  • Bad handling of new transaction started in the callback and HTTP keep-alive was active

  • Bad handling of error (connection lost) when starting a new transaction on a HTTP kept-alive connection

Added
  • On Linux, use MSG_NOSIGNAL to avoid SIGPIPE on send()

  • Add API to read proxy configuration

  • Send up-to-date version info in User-Agent HTTP header

Fixed
  • Avoid (currently harmless) inconsistent locking order

  • Fix HTTP GET & CONNECT proxy w/HTTP Keep-Alive

Fixed
  • Unify default blocking I/O setting to block in sync and non-block in callback interface

Fixed
  • Read from OpenSSL in a loop, to handle more than one record received at a time

  • Fix minor race condition on timer expiry

Added
  • Use HTTP Keep-alive, where possible

Fixed
  • Fix removing the first context from the timer list

Added
  • Support OpenSSL 1.1.0+ (BIO_(s|g)et_conn_ip -> BIO_(s|g)et_conn_address)

Fixed
  • Handle chunks larger than http_buff

  • Fix receiving data longer than http_buff at a time

Fixed
  • Cleanups, fix build issue and warnings on Windows

Fixed
  • Fix resource leaks in C++ pubnub::futres on Windows

Fixed
  • Fix build issues on Mac

Fixed
  • Fix high CPU utilization when network out on Mac

Fixed
  • Fix off-by-one error

Fixed
  • Fix handling of recv() errrno on MacOS

Added
  • Support OpenSSL 1.1.0+ (removed BIO_set_conn_port_int)

Fixed
  • Some logging code was not using proper types

Fixed
  • Fix potential issue in interpreting UTF-8 char values

Fixed
  • Fix off-by-one error

Fixed
  • Fix handling of segmented messages

Added
  • Improve exising and add new logging

Added
  • Improve parsing of bad publish/subscribe key error

  • Add option to turn of SSL/TLS session reuse

  • PNR_TIMEOUT no longer resets the time token

Fixed
  • Fixes and improvements of the console sample application

Fixed
  • Fix C++ pubnub::futres destructor hanging up

Added
  • First "core feature complete" release