Skip to content

Commit d1d0118

Browse files
Nanostack: translate errors from sendmsg
Translate errors to NSAPI_ERROR_*, instead of always returning NSAPI_ERROR_DEVICE_ERROR
1 parent 2641fb3 commit d1d0118

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

features/nanostack/nanostack-interface/Nanostack.cpp

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -646,14 +646,35 @@ nsapi_size_or_error_t Nanostack::do_sendto(void *handle, const ns_address_t *add
646646
* \return -5 Socket not connected
647647
* \return -6 Packet too short (ICMP raw socket error).
648648
* */
649-
if (retcode == NS_EWOULDBLOCK) {
650-
ret = NSAPI_ERROR_WOULD_BLOCK;
651-
} else if (retcode < 0) {
652-
tr_error("socket_sendmsg: error=%d", retcode);
653-
ret = NSAPI_ERROR_DEVICE_ERROR;
654-
} else {
649+
if (retcode >= 0) {
655650
ret = retcode;
656-
}
651+
} else switch (retcode) {
652+
case -1:
653+
ret = NSAPI_ERROR_PARAMETER;
654+
break;
655+
case -2:
656+
ret = NSAPI_ERROR_NO_MEMORY;
657+
break;
658+
case -3:
659+
ret = NSAPI_ERROR_NO_ADDRESS;
660+
break;
661+
case -4:
662+
ret = NSAPI_ERROR_BUSY;
663+
break;
664+
case -5:
665+
ret = NSAPI_ERROR_NO_CONNECTION;
666+
break;
667+
case -6:
668+
ret = NSAPI_ERROR_PARAMETER;
669+
break;
670+
case NS_EWOULDBLOCK:
671+
ret = NSAPI_ERROR_WOULD_BLOCK;
672+
break;
673+
default:
674+
tr_error("socket_sendmsg: error=%d", retcode);
675+
ret = NSAPI_ERROR_DEVICE_ERROR;
676+
break;
677+
}
657678

658679
out:
659680
tr_debug("socket_sendto(socket=%p) sock_id=%d, ret=%i", socket, socket->socket_id, ret);

0 commit comments

Comments
 (0)