#define CAIPS_GET_ERROR \
strerror(errno)
#endif
-static CAIPExceptionCallback g_exceptionCallback;
+static CAIPErrorHandleCallback g_ipErrorHandler = NULL;
-static CAIPPacketReceivedCallback g_packetReceivedCallback;
+static CAIPPacketReceivedCallback g_packetReceivedCallback = NULL;
static void CAHandleNetlink();
static void CAFindReadyMessage();
g_packetReceivedCallback = callback;
}
-void CAIPSetExceptionCallback(CAIPExceptionCallback callback)
-{
- g_exceptionCallback = callback;
-}
-
void CAIPSetConnectionStateChangeCallback(CAIPConnectionStateChangeCallback callback)
{
CAIPSetNetworkMonitorCallback(callback);
if (!endpoint)
{
OIC_LOG(DEBUG, TAG, "endpoint is null");
+ if (g_ipErrorHandler)
+ {
+ g_ipErrorHandler(endpoint, data, dlen, CA_STATUS_INVALID_PARAM);
+ }
return;
}
char *secure = (endpoint->flags & CA_SECURE) ? "secure " : "";
- (void)secure; // eliminates release warning
- (void)cast;
+ (void)cast; // eliminates release warning
(void)fam;
struct sockaddr_storage sock;
ssize_t len = sendto(fd, data, dlen, 0, (struct sockaddr *)&sock, socklen);
if (-1 == len)
{
+ // If logging is not defined/enabled.
+ if (g_ipErrorHandler)
+ {
+ g_ipErrorHandler(endpoint, data, dlen, CA_SEND_FAILED);
+ }
OIC_LOG_V(ERROR, TAG, "%s%s %s sendTo failed: %s", secure, cast, fam, strerror(errno));
}
else
err = WSAGetLastError();
if ((WSAEWOULDBLOCK != err) && (WSAENOBUFS != err))
{
+ // If logging is not defined/enabled.
+ if (g_ipErrorHandler)
+ {
+ g_ipErrorHandler(endpoint, data, dlen, CA_SEND_FAILED);
+ }
+
OIC_LOG_V(ERROR, TAG, "%s%s %s sendTo failed: %i", secure, cast, fam, err);
}
}
return CA_STATUS_OK;
}
+
+void CAIPSetErrorHandler(CAIPErrorHandleCallback errorHandleCallback)
+{
+ g_ipErrorHandler = errorHandleCallback;
+}