Changelog for PubNub POSIX C++ SDK

v4.9.1

March 26, 2024
Fixed
  • Fix too small amount of memory allocated for aes cbc algorithm in some cases.
Modified
  • Add possibility to include address sanitizer in build via CMake.

v4.9.0

January 8, 2024
Added
  • Provide CMake support.
  • Adjust `build.cs` unreal engine file for CMake build.

v4.8.0

December 7, 2023
Added
  • Add `#if` switches into files that are related to PubNub features to not rely only on makefiles. [Be careful when update. It's not a breaking change at all but might fail build for custom makefiles!].

v4.7.1

November 23, 2023
Fixed
  • Handle unencrypted message while getting messages with crypto.

v4.7.0

November 20, 2023
Added
  • Provided `PUBNUB_EXTERN` macro to extern C functions.

v4.6.2

November 14, 2023
Fixed
  • Fix `pubnub_free()` function on not initialised PubNub that can cause exceptions/undefined behaviours.

v4.6.1

November 8, 2023
Fixed
  • Provide missing `publish()` function overload for QT wrapper that allows set publish related options.

v4.6.0

October 30, 2023
Added
  • Add the `PUBNUB_QT_MOVE_TO_THREAD` flag as default to give users the opportunity to manage threads by themselves.
Fixed
  • Move `pubnub_qt` into QT main thread by default to be sure that timers will be run in it.

v4.5.0

October 16, 2023
Added
  • Update the crypto module structure and add enhanced AES-CBC cryptor.
Fixed
  • Improved security of crypto implementation by increasing the cipher key entropy by a factor of two.
  • Fixed missing return from failed `pbaes256_decrypt_alloc()` function.

v4.4.0

September 28, 2023
Added
  • Provide module files to integrate SDK with Unreal Enigne.

v4.3.0

July 24, 2023
Added
  • Add publisher field into `pubnub_v2_message`.
Fixed
  • Fixed flags and region values that always equaled 0.

v4.2.2

May 24, 2023
Fixed
  • Conditionally use of using newest openssl API Ipv4 parsing is needed for working with proxy. Include object file with that function for proxy builds.
Modified
  • Use newest openssl API.

v4.2.1

April 26, 2023
Modified
  • Conditionally use sha256 when build is linked with OpenSSL 3+ version.

v4.2.0

February 7, 2023
Added
  • Updated QT to version `6.*`.
Fixed
  • Fixed not building QT module.
  • Align QT module with current SDK state.
Modified
  • Removed some states, classes and structs that aren't currently used.

v4.1.0

January 16, 2023
Added
  • Added pubnub_set_state_ex to support heartbeat.
Fixed
  • Removed state param from subscribe request.
  • Added state param to hearbeat request.

v4.0.6

December 14, 2022
Fixed
  • Fixed hanging allocated memory after error in `parse_token` by cleaning the result memory on cbor error.
Modified
  • Implemented more tests for `pubnub_token_parse` function to increase confidence about that function.
  • Refactored implementation of some tests' setups.

v4.0.5

December 2, 2022
Fixed
  • Fixed compilation error for MSVC in `pubnub_parse_token` function.

v4.0.4

November 25, 2022
Fixed
  • Fixed crashing parsing token for not valid values by logging an error and returning NULL.

v4.0.3

November 17, 2022
Fixed
  • Fixed wrong pointer reallocation in string concatenation.
  • Fixed allocation counter that was not taking to the account recursed allocations.

v4.0.2

November 15, 2022
Fixed
  • Improved accuracy of the base64 encoding size what fixes buffer underflow in encryption module.
  • Fixed undefined behaviours in `pubnub_encrypt_decrypt_iv_sample.c` by including some additional checks and variable initialisations.
Modified
  • Made same base for encrypt functions what makes codes easier to understand and maintain.

v4.0.1

November 8, 2022
Fixed
  • `ERR_load_BIO_strings()` is deprecated in OpenSSL 3.0. Low-level encoding primitives are also deprecated. `EVP_EncodeBlock()` is available in all currently supported OpenSSL releases.

v4.0.0

November 2, 2022
Added
  • Add `user_id` configuration option that deprecates uuid ones.
  • BREAKING CHANGES: now `user_id` (old uuid) is a required property!.

v3.5.2

October 11, 2022
Fixed
  • Fix memory leak in cpp `parse_token` method.
  • Fix buffer overflow in core `pubnub_parse_token` function for some cases.
  • Fix buffer overflow in core `pubnub_encrypt` function for randomized initial vector.

v3.5.1

September 22, 2022
Fixed
  • Fix wrong parsing uuid in parse_token.
  • Fix case sensitive header check.

v3.5.0

September 8, 2022
Added
  • Implemented Fetch History.

v3.4.3

July 5, 2022
Fixed
  • Removed extra parenthesis in get_dns_ip function code.
  • Added uuid query param to history, set/get state, wherenow, channel-group operations.

v3.4.2

April 25, 2022
Fixed
  • Handle state for subscribe and resubscribe.

v3.4.1

March 9, 2022
Fixed
  • Support system name servers in async DNS client.
  • Fix multiple memory safety and leak issues.
  • Fix slash char encoding for pnsdk.

v3.4.0

January 11, 2022
Added
  • Add token permissions revoke functionality.
Fixed
  • Remove body from signature calculation for requests with DELETE HTTP method.
Modified
  • Update `.pubnub.yml` file with access token revoke and secret key all access.

v3.3.2

January 10, 2022
Fixed
  • Filter-expr query param typo.

v3.3.1

January 5, 2022
Fixed
  • Encode = (equal) sign for filter expression.

v3.3.0

October 11, 2021
Added
  • Implemented PAMv3 support.
Fixed
  • Handle subscribe error for empty channel-group.

v3.2.0

September 15, 2021
Fixed
  • Error codes for missing subscribe timetoken.

v3.1.0

June 14, 2021
Added
  • Added PAMv3 Grant Token support.

v3.0.0

May 24, 2021
Added
  • BREAKING CHANGE - Added PUBNUB_RAND_INIT_VECTOR to support dynamic IV, default to true.

v2.14.0

May 10, 2021
Fixed
  • Handling Access Denied server error in Pubnub Access Manager requests.

v2.13.0

April 20, 2021
Added
  • Implemented Pubnub Access Manager Support.
  • Implemented Objects V2. Removed Objects V1.

v2.12.7

January 20, 2021
Added
  • Added support for Universal Windows(UWP).

v2.12.6

October 3, 2020
Fixed
  • Fix DNS servers rotation during transaction origin DNS resolution timeout.

v2.12.5

April 8, 2020
Modified
  • Dynamically allocate memory for uuid in `pubnub_set_uuid` function.

v2.12.4

January 31, 2020
Fixed
  • Properly handle DNS retries and stale HTTP Kept-Alive connections

v2.12.3

January 16, 2020
Fixed
  • Fix assertion failure while retrying timed out DNS queries with multiple contexts

v2.12.2

December 5, 2019
Modified
  • Add support for automatic sending of heartbeat messages with sync interface (POSIX and Windows)

v2.12.1

November 22, 2019
Modified
  • Add support for automatic sending of heartbeat messages on Windows, callback.

v2.12.0

November 15, 2019
Modified
  • Support automatic sending of heartbeat messages (only on POSIX, callback, for now).

v2.11.1

October 25, 2019
Fixed
  • Fix Qt

v2.11.0

October 20, 2019
Modified
  • Introduce Actions API
  • Add 'include_meta' parameter to pubnub_history_ex()
Fixed
  • Fix stopwatch not working after 25 days

v2.10.2

October 18, 2019
Fixed
  • Restore get/set connection timeout in C++ wrapper

v2.10.1

October 2, 2019
Modified
  • Retry if DNS server does not respond. Number of retries is a compile-time parameter.
Fixed
  • In C++, fix transaction finishing before user starts to wait for it to finish.

v2.10.0

September 23, 2019
Modified
  • Introduce Objects API
Fixed
  • Fix high history (extended/full) handling of 'reverse' and other boolean parameters

v2.9.4

September 10, 2019
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

v2.9.3

September 3, 2019
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

v2.9.2

August 28, 2019
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.

v2.9.1

August 25, 2019
Modified
  • Improvements in sockets and DNS error reporting

v2.9.0

August 9, 2019
Modified
  • Introduce Signals support
  • Support subscribe V2 in C++ & Qt
  • Add pubnub_stop() for graceful shutdown when using callback interface

v2.8.4

June 12, 2019
Modified
  • Introduce minimal transaction timer duration
  • Use QTime for transaction timer duration

v2.8.3

May 31, 2019
Modified
  • Use TTL from DNS response (cache resolved addresses)
  • Better identification of the platform we run on
  • Detect authenticating proxy that works incorrectly

v2.8.2

April 29, 2019
Modified
  • Will try other address from (async) DNS response if first one fails
  • Will try secondary (async) DNS server if primary doesn't work

v2.8.1

April 29, 2019
Modified
  • Update pubnub_allooc_std.c to pubnub_cancel() changes

v2.8.0

March 18, 2019
Modified
  • Support Message Counts API

v2.7.0

February 19, 2019
Modified
  • Support IPv6 for DNS resolution (mostly for callback interface)

v2.6.4

January 17, 2019
Fixed
  • URL encode channel name(s)

v2.6.3

January 8, 2019
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 does not incur much memory increase
Fixed
  • C++ wrapper and Qt did not have proper multithreading support as they did not protect _their_ data. Now that is fixed.

v2.6.2

December 20, 2018
Fixed
  • Fix memory leak regarding OpenSSL

v2.6.1

December 2, 2018
Modified
  • Publish can now be GZIPed (if done via POST)
Fixed
  • Publish via POST encrypted could publish garbage and fail

v2.6.0

November 20, 2018
Modified
  • Publish can now be done via POST
Fixed
  • Several smaller DNS en/de/coding issues fixed

v2.5.8

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

v2.5.7

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

v2.5.6

November 2, 2018
Fixed
  • TLS connection timeout was prone to errors due to time synchronisation and such.

v2.5.5

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

v2.5.4

October 18, 2018
Fixed
  • Fix DNS decoding

v2.5.3

October 16, 2018
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

v2.5.2

September 10, 2018
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.

v2.5.1

August 30, 2018
Added
  • Removed (unused) option to ignore TLS/SSL errors

v2.5.0

August 28, 2018
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

v2.4.3

July 25, 2018
Added
  • Support OpenSSL 1.1.x with callback interface
  • Add support for filter expressions on subscribe
  • Enable receiving GZIP-ed reply

v2.4.2

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

v2.4.1

July 6, 2018
Added
  • Enable reading system DNS on Windows
Fixed
  • Small fixes in system DNS reading/parsing

v2.4.0

June 14, 2018
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

v2.3.3

April 11, 2018
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

v2.3.2

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

v2.3.1

March 8, 2018
Fixed
  • Read from OpenSSL in a loop, to handle more than one record received at a time
  • Fix minor race condition on timer expiry

v2.3.0

March 5, 2018
Added
  • Use HTTP Keep-alive, where possible

v2.2.14

February 6, 2018
Fixed
  • Fix removing the first context from the timer list

v2.2.13

February 6, 2018
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

v2.2.12

December 30, 2017
Fixed
  • Cleanups, fix build issue and warnings on Windows

v2.2.11

October 30, 2017
Fixed
  • Fix resource leaks in C++ pubnub::futres on Windows

v2.2.10

October 5, 2017
Fixed
  • Fix build issues on Mac

v2.2.9

October 1, 2017
Fixed
  • Fix high CPU utilization when network out on Mac

v2.2.8

September 25, 2017
Fixed
  • Fix off-by-one error

v2.2.7

September 14, 2017
Fixed
  • Fix handling of recv() errrno on MacOS

v2.2.6

September 10, 2017
Added
  • Support OpenSSL 1.1.0+ (removed BIO_set_conn_port_int)
Fixed
  • Some logging code was not using proper types

v2.2.5

September 1, 2017
Fixed
  • Fix potential issue in interpreting UTF-8 char values

v2.2.4

August 30, 2017
Fixed
  • Fix off-by-one error

v2.2.3

March 9, 2017
Fixed
  • Fix handling of segmented messages
Added
  • Improve exising and add new logging

v2.2.2

October 12, 2016
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

v2.2.1

April 2, 2016
Fixed
  • Fix C++ pubnub::futres destructor hanging up

v2.2.0

February 22, 2016
Added
  • First "core feature complete" release
Last updated on