Status Events for POSIX C SDK

C-Core status codes and user actions

These are the symbols from the enum pubnub_res which is used throughout the C-core API to convey the information about the outcome of a Pubnub transaction. They are used in both C and C++, on all platforms.

General Errors Handling

If your Pubnub transaction fails, you might want to retry. But, sometimes that may not be such a good idea. To that end, there is a function pubnub_should_retry() and its wrapper, member function should_retry() in C++. See their documentation about their usage.

To get a string describing a C-core status code, call pubnub_res_2_string().

Also, increasing the C-core logging to maximum will output a lot of data useful in diagnosing the cause of errors/failures.

The List

Symbol/codeDescriptionUser action
PNR_OK
Transaction success.
Proceed with business as usual.
PNR_ADDR_RESOLUTION_FAILED
Pubnub host name resolution failed. We failed to get an IP address from the PubNub host name (origin). Most of the time, this comes down to a DNS error.
Check your network, focusing on DNS issues.
PNR_CONNECT_FAILED
Connecting to Pubnub server failed. Most often, this means a network outage, but could be many things. If using SSL/TLS, it could be some of its errors.
Check your network including any firewall/proxy. If using SSL/TLS, check the errors reported, try using fallback.
PNR_CONNECTION_TIMEOUT
A time-out happened in the network. Mostly, this is because a network outage happened while being connected to the PubNub server, but could be other things.
Treat this similarly to PNR_CONNECT_FAILED, but focus more on hardware / low level IP issues.
PNR_TIMEOUT
Time-out before the request has completed. This is reported for a time-out detected by PubNub client itself, not some reported by others (i.e. the TCP/IP stack).
Increase the transaction timeout you used. If that doesn't help, treat it like PNR_CONNECTION_TIMEOUT.
PNR_ABORTED
Connection to Pubnub aborted (in most cases, a TCP reset was received).
This is very unlikely, unless you're using a proxy - in which case, check the proxy. If not using proxy, please report this to PubNub.
PNR_IO_ERROR
Communication error (network or HTTP response format)
If you're using a proxy, please check the proxy. Otherwise, this indicates some SW error, possibly problem in C-core itself. Please report this to PubNub.
PNR_HTTP_ERROR
An error reported in HTTP status code, not detected by some other means.
This is a fallback to the cases that C-core hasn't covered yet. Call pubnub_last_http_code() to get the error code. Also, read the actual response to understand what was the problem.
PNR_FORMAT_ERROR
Unexpected input in received JSON.
If using a proxy, please check the proxy. Otherwise, this is most likely an error in C-core parsing, so please report this to PubNub.
PNR_CANCELLED
User cancelled a transaction.
If you haven't cancelled a transaction, please report this to Pubnub.
PNR_STARTED
Transaction started - this is not an error code, but information/status code.
Await the final outcome.
PNR_IN_PROGRESS
Transaction (already) ongoing. Can't start a new transaction while the old one is in progress.
Await the final outcome of the current transaction or start it in another context.
PNR_RX_BUFF_NOT_EMPTY
Receive buffer (from previous transaction) not read, new subscription not allowed.
Read the whole receive buffer.
PNR_TX_BUFF_TOO_SMALL
The transmit buffer is too small.
Increase #PUBNUB_BUF_MAXLEN or divide your message to multiple segments.
PNR_INVALID_CHANNEL
Channel specification / name is invalid.
Use a valid channel name/specification.
PNR_PUBLISH_FAILED
Publish transaction failed - error returned from Pubnub.
To see the reason describing the failure, call pubnub_last_publish_result().
PNR_CHANNEL_REGISTRY_ERROR
A transaction related to channel registry failed - error returned from Pubnub.
To see the reason describing the failure, get the value for key message from the response (which is a JSON object) and value for key status for the numeric code of the error.
PNR_REPLY_TOO_BIG
Reply is too big to fit in our reply buffer. This same error is reported if the reply buffer is statically or dynamically allocated.
If using statically allocated buffer, increase the buffer size. Otherwise, this indicates you need more RAM.
PNR_INTERNAL_ERROR
An internal error in processing.
Please report to Pubnub.
PNR_CRYPTO_NOT_SUPPORTED
Encryption (and decryption) not supported.
Switch to a platform that supports encryption/decryption (like OpenSSL) or don't use it.
Last updated on