Skip to content

Releases: nats-io/nats.c

Release v3.12.0

24 Nov 17:23
aed20fe

Choose a tag to compare

Changelog

This release contains a fix to the ObjectStore that caused the meta subject of objects to be incorrectly encoded, which would cause other NATS libraries to fail to retrieve some of the objects (it would depend on the result of object name encoding). The fix here could cause now the C client to be unable to retrieve objects that it previously stored. A tool has been provided to repair the object stores that may have been affected. See PR #934 and #936 for more details.

Changed

  • KeyValue
  • ObjectStore
    • Use proper encoding for meta subject of objects. The wrong encoding would prevent other libraries (or the NATS CLI tool) from retrieving some objects by @kozlovic in #934, #936. The issue was reported by @Zabrimus in #933.

Fixed

  • Failure to reconnect in some conditions during the first connect. This would happen with option natsOptions_SetRetryOnFailedConnect by @Matus-p in #926

Non-code changes

  • Tests
    • Fixed JetStreamSubscribePullAsync to work with latest server versions by @kozlovic in #927

New Contributors

Release v3.11.0

26 Sep 17:59
d457fac

Choose a tag to compare

Changelog

This release contains some breaking changes. See the "Changed" section below.

Changed

  • Build
    • Disable NATS Streaming by default by @mtmk in #770
    • TLS
      • Require OpenSSL 1.1.1+ to compile. Removed the NATS_BUILD_TLS_USE_OPENSSL_1_1_API CMake variable by @kozlovic in #905
      • The option natsOptions_SetSSLVerificationCallback signature was changed to replace the use of SSL_verify_cb (which required OpenSSL dependency in the nats.h file), to the new callback natsSSLVerifyCb. See documentation of natsSSLVerifyCb to see the cast needed to compile with this new header file by @kozlovic in #908
  • Modification of a natsOptions object if it has TLS/SSL configuration and is actively used by connections will now return a NATS_ILLEGAL_STATE by @kozlovic in #912

Added

  • Options
    • Ability to load the trusted CA certificates from a directory using the new option natsOptions_LoadCATrustedCertificatesPath by @kerbert101 in #862
    • Ability to connect via HTTP proxy for instance by adding a proxy connection handler using the new option natsOptions_SetProxyConnHandler by @wolfkor in #871 and @kozlovic in #897
    • Ability to load the certificate chain and key from a file on every connection attempt using the new option natsOptions_LoadCertificatesChainDynamic by @Matus-p in #901
    • Ability to perform concurrent TLS handshakes that may improve time it takes for concurrent connections to be established using the new option natsOptions_AllowConcurrentTLSHandshakes by @kozlovic in #914. Issue was reported by @yanyongcheng in #899
  • JetStream
    • Per-message TTL support (a NATS Server v2.11 feature) by @levb in #863
    • Pull consumer priority groups (a NATS Server v2.11 feature) by @levb in #869
  • ObjectStore support by @kozlovic in #902. Thanks to @jfflynn41 and @alex1891 for the feedback in #876

Improved

Fixed

  • EventLoop:
  • KeyValue
  • MicroServices:
  • TLS
    • Unknown type name SSL_verify_cb by @kozlovic in #878. Issue was reported by @philipfoulkes in #877
    • Initialization and cleanup code related to OpenSSL was removed since it was deprecated for versions post OpenSSL 1.1. A cleanup function pertinent to 1.1+ code was possibly causing a problem. By @kozlovic in #905. Issue was reported by @vdeters in #904
    • Possible hang during handshake by @kozlovic in #907. Issue was reported by @etrochim in #906
    • Protect calls to SSL_read and SSL_write with a mutex. Since the same SSL object is shared between different threads, the OpenSSL library requires a mutex to be used by @kozlovic in #913
  • Memory allocation check by @wooffie in #868
  • Add missing status text string by @oldnick85 in #872 and @kozlovic in #874 (the issue was not present in any published release and was introduced in #869)
  • Parsing of message headers with NULL or all-whitespace values by @habbbe in #873
  • Removed some unused code related to handling of responses and added custom inbox with very long prefix test by @kozlovic in #885. Issue was reported by @yanyongcheng in #884
  • Connection drain could cause missed reply and/or a 100ms delay by @kozlovic in #915. Issue was reported by @T-Maxxx in #911

Non-code changes

  • Build
    • Deprecated Ubuntu 20.04 in GitHub actions by @levb in #864
    • Removed the older compiler jobs by @levb in #865
    • Fixed Windows build to use the NATS Server main branch by @levb in #866

New Contributors

v3.10.1

14 Mar 17:00
484f16f

Choose a tag to compare

Fixed

  • #857 a build issue caused by the introduction of natsOptions_SetSSLVerificationCallback, now marked as experimental.

Full Changelog: v3.10.0...v3.10.1

v3.10.0

28 Feb 18:55
1877b1a

Choose a tag to compare

Added

  • Added UpdatesOnly to kwWatchOptions by @levb in #818
  • Add SSL cert validation callback by @ckasabula in #826
  • [ADDED] natsConnection_ReadLastError replaces natsConnection_GetLastE… by @levb in #846

Fixed

  • [FIXED] EventLoop: Socket now closed only after event loop done polling by @kozlovic in #815
  • [FIXED] microservice cleanup (flapping MicroServiceStops... tests) by @levb in #816
  • [NIT] removed line-trailing whitespace in the code by @levb in #817
  • [FIXED] Examples: Add missing 'stream' and 'durable' params in usage by @kozlovic in #821
  • Fixed JetStreamBackOffRedeliveries test by @kozlovic in #822
  • [FIXED] build error (#819) by @oldnick85 in #820
  • [FIXED] Build: failure with mingw by @kozlovic in #828
  • [FIXED] microService_AddEndpoint() could crash if subject is invalid by @kozlovic in #831
  • [FIXED] C++ compiler errors by @mtmk in #832
  • [FIXED] Build: failure with Android NDK by @mtmk in #830
  • [FIXED] GH-823 deadlock in js_MaybeFetchMore by @levb in #834
  • [FIXED] Default statistics handler of microservice had unnecessary check by @kozlovic in #837
  • [FIXED] Added missing NATS_EXTERN on some functions. by @kozlovic in #836
  • fix: some nulls checks by @wooffie in #840
  • fix: double free and deref after free in js.c by @wooffie in #839
  • fix: typo in clear routine by @wooffie in #842
  • fix: better cleanup if js clone config fails by @wooffie in #844
  • Fix possible null deref in pub by @wooffie in #848
  • fix: srvpool typo by @wooffie in #849

Non-code changes

  • Generate cnats-config-version.cmake by @rolflussi in #813
  • Removed [EXPERIMENTAL] from KV API by @levb in #838
  • Removed all remaining EXPERIMENTAL (micro)services documentation references by @levb in #847

New Contributors

Full Changelog: v3.9.0...v3.10

v3.9.3

28 Feb 14:38
6367f6e

Choose a tag to compare

Fixed:

  • microService_AddEndpoint() could crash if subject is invalid #831
  • deadlock in js_MaybeFetchMore #834
  • double free and deref after free in js.c#839
  • some nulls checks #840
  • typo in clear routine #842
  • better cleanup if js clone config fails #844
  • possible null deref #848
  • srvpool typo #849

Full Changelog: v3.9.2...v3.9.3

v3.9.2

09 Dec 17:28
86fc47f

Choose a tag to compare

Fixed

  • EventLoop: Socket now closed only after event loop done polling #815
  • microservice cleanup (flapping MicroServiceStops... tests) #816
  • removed line-trailing whitespace in the code #817
  • Examples: Add missing 'stream' and 'durable' params in usage #821
  • JetStreamBackOffRedeliveries test #822

Build

  • Generate cnats-config-version.cmake #813
  • build error #820

Full Changelog: v3.9.1...v3.9.2

Release v3.9.1

02 Oct 21:02
9705670

Choose a tag to compare

What's Changed

  • Fixed the version string to remove -beta

Full Changelog: v3.9.0...v3.9.1

v3.9.0

01 Oct 19:11
233ca8e

Choose a tag to compare

Added

  • js_PauseConsumer support (also changed jsConsumerConfig, jsCo… by @levb in #726
  • Expose MaxPendingBytes on the natsOptions by @LaurensVergote in #700
  • kvStore_WatchMulti, js_Subscribe[Sync]Multi by @levb in #750
  • natsConnection_Reconnect by @levb in #757
  • Support %-encoded username/password in server URLs by @levb in #765
  • Support linking with MinGW toolchains on Linux by @XJ-0461 in #763
  • TLS: natsOptions_TLSHandshakeFirst() by @kozlovic in #780
  • Adding SNI extension if available by @thierryba in #787
  • Add filtering to KV method returning all keys by @saurabhojha in #797
  • js_PullSubscribeAsync by @levb in #785
  • [BREAKING] Services: queue group now configurable and can be disabled by @levb in #800
  • nats_GetJWTOrSeed to understand Windows \r\n lines by @levb in #801

Fixed

  • Moved micro_args to examples by @levb in #731
  • Modify JetStream examples (Add comments to SubjectsLen) by @pch-blog in #734
  • Build: issue on Android with NATS_EXTRA_LIB by @kozlovic in #739
  • GH-738, do not prefix endpoint name with the group prefix by @levb in #741
  • GH-736: added extern to micro_Errors by @levb in #743
  • Fix heap buffer overflow in _fetch by @tyler92 in #749
  • Improve Windows build support by @mtmk in #760
  • refactored nats.c, prep for js_PullSubscribeAsync by @levb in #778
  • Fixing setting handshake_first without setting secure in the natsOptions by @thierryba in #789

Non-code changes

  • [ADDED] GitHub action to update docs by @levb in #720
  • [FIXED] doxygen GH action skip ci, include release_* by @levb in #725
  • [FIXED] More fixes for doxygen autoupdate by @levb in #729
  • [FIXED] flapping test: Test_KeyValueMirrorCrossDomains by @levb in #747
  • [ADDED] Build with GitHub actions by @levb in #748
  • [CI only]: Nightly test server main, latest release by @levb in #751
  • [TEST only] increased Test_KeyValueMirrorCrossDomains timeout value by @levb in #753
  • [CI only] Adjusted coverage targets/thresholds by @levb in #752
  • [CI only] run tests once, not x3 except for main, release by @levb in #759
  • [TEST ONLY] Fixed Test_JetStreamSubscribeIdleHeartbeat by @levb in #764
  • [CI only] Skip codecov for forks until they resolve tokenless uploads… by @levb in #768
  • [FIXED] cleaning up sanitize=thread found several races by @levb in #771
  • benchmark for SubscribeAsync by @levb in #774
  • Fixed test_JetStreamInfoAlternates flapper by @kozlovic in #775
  • [CHANGED] sub benchmark tuned by @levb in #777
  • Fixed flappers and test_SSLHandshakeFirst by skipping if server is < 2.10.0 by @kozlovic in #784
  • Fixed test SSLVerifyHostName when build NATS_FORCE_HOST_VERIFICATION=OFF by @kozlovic in #788
  • nats.c is available on conan.io/center by @mathi-m in #791
  • [TEST ONLY] test fixes for 2.11 server changes by @levb in #798

New Contributors

Full Changelog: v3.8.0...v3.9.0

Release v3.8.3

01 Oct 18:02
6b23607

Choose a tag to compare

Changes

  • Fix heap buffer overflow in _fetch #749
  • Changed "Ws2_32" to "ws2_32" for MinGW compatibility with no adverse e…#763
  • Changed nats_GetJWTOrSeed to understand Windows \r\n lines #801

Test-only changes

  • Fixed flapping test: Test_KeyValueMirrorCrossDomains #747
  • Increased Test_KeyValueMirrorCrossDomains timeout value #753
  • Fixed Test_JetStreamSubscribeIdleHeartbeat #764
  • Test fixes for 2.11 server changes #798

Full Changelog: v3.8.2...v3.8.3

v3.8.2

17 Apr 17:02
d58bb6b

Choose a tag to compare

Fixed

  • Moved micro_args to examples by @levb in #731
  • [FIXED] Build: issue on Android with NATS_EXTRA_LIB by @kozlovic in #739
  • [FIXED] GH-786, do not prefix endpoint name with the group prefix by @levb in #741
  • [FIXED] GH-736: added extern to micro_Errors by @levb in #743

Full Changelog: v3.8.0...v3.8.2