Releases: pubnub/c-core
Bug fix release
- On Linux, use MSG_NOSIGNAL to avoid SIGPIPE on send()
- Add API to read proxy configuration
- Avoid (currently harmless) inconsistent locking order
- Fix HTTP GET & CONNECT proxy w/HTTP Keep-Alive
- Send up-to-date version info in User-Agent HTTP header
- Various smaller fixes and logging improvements.
2.3.2: Merge pull request #42 from pubnub/develop
Bug fix release
- Fix reading from OpenSSL in a loop, as one read gets us at most one TLS record, while there may be more than one in the TCP/IP buffer
- Fix minor race condition in timer expiry
Minor release
The main feature of this release is HTTP keep-alive support. C-core will now keep the TCP or TLS connection alive after a transaction ends and will re-use it for the next transaction, thus, in regular case, make transactions be much faster and use less resources (bandwidth, CPU...). It is on by default, but can be turned off.
There are several bug fixes and cleanups, too.
Bug fix release
Fix bug in timer lists: If the first context in the list (the next one to expire) was removed from the list, the next one wouldn't get its "time to expire", but would be left with "what it had", causing it to expire sooner.
Some other cleanups of issue reported by static analyzers, all minor.
Bug fix release
A (mostly) complete list of bug fixes and cleanups in this release:
-
Added some ASSERTs to check buffer access. These should not happen, but,
if there's some bug, they will, so: ASSERT() -
Fixed and updated unit tests
-
Fix receiving data longer than a http_buf at a time
If we had received data from Pubnub server that is longer than the
size of our HTTP ("scratchpad") buffer, we would mishandle that. It
wouldn't show often, as default size of the buffer on Windows and
POSIX was 32000 octets, which is longer than most HTTP replies.This was actually a regression introduced in commit 03dfd2c.
This prompted a "small scale refactoring" of the buffer handling,
which is now a little simpler, more resilent, uses less memory and
fixes some other corner-cases which probably couldn't happen "as-is",
but, just like this regression, could have "awaken" with some other
"innocent looking" change. -
Handle HTTP chunks larger than http_buff
This was merely being too eager to reject long chunks. If the chunk
is largert thenhttp_buff
, we can simply get it in several
iterations. Of course, it may turn out that the chunk is too big to
fit in the reply buffer, but, no need to reject it beforehand. -
Fix compiler and static check warnings on Windows
Various fixes for compiler warnings and static check errors/warnings
reported by MSVC, clang-analyzer (scan-build
) and CppCheck.Also, the Makefile for GCC on Windows was updated and now builds
basic examples. -
Support OpenSSL 1.1.0+,
BIO_(s|g)et_conn_ip
->
BIO_(s|g)et_conn_address
-
Some NMake preprocessor magic to detect the
.lib
s to use, as this has changed in 1.1.0+,
at least in OpenSSL "distribution" we use -
The Base64 encoded length was not correctly calculated in all cases
-
Introduced a new Base64 helper function to calculate the needed size of
the char array for the encoded string -
A small bug in Base64 decoder was fixed.
-
Other than that, some undefined behavior removed and some style improvements.
Bug-fix release
- Fix some Mac build issues
- Fix high CPU utilization when network out on POSIX/Mac
- Fix off-by-one error
Bug-fix release
- Add support for OpenSSL 1.1.0+
- Fix handling of recv() errors on MacOS
- Several smaller fixes and logging impovements
Bug-fix
Version 2.2.0
Highlights for this release are:
- Support for thread-safety
- Timers
- FreeRTOS(+TCP) port
- Qt port
- Light-weight yet powerful logging sub-system
- Support for setting "origin" (the server name)
There are numerous other smaller improvements.