请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3100 在 CC3100上使用 MQTT 堆栈时、是否会因为 MQTT 代理设置不正确/无效的 URL 和/或为代理使用无效 CA 证书而出现特定错误代码? 我们正在寻找一种方法来将这些错误与可能发生的其他网络错误区分开来。 谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的 David:
在 sl_MQTT_CLIENT.h 中定义了一些 MQTT 特定的错误代码:
#define SL_MQTT_ERR_NETWORK MQP_ERR_NETWORK /**< Problem in network (sock err) */ #define SL_MQTT_ERR_TIMEOUT MQP_ERR_TIMEOUT /**< Net transaction has timed out */ #define SL_MQTT_ERR_NET_OPS MQP_ERR_NET_OPS /**< Platform Net Ops un-available */ #define SL_MQTT_ERR_FNPARAM MQP_ERR_FNPARAM /**< Invalid parameter(s) provided */ #define SL_MQTT_ERR_PKT_AVL MQP_ERR_PKT_AVL /**< No pkts are available in pool */ #define SL_MQTT_ERR_PKT_LEN MQP_ERR_PKT_LEN /**< Inadequate free buffer in pkt */ #define SL_MQTT_ERR_NOTCONN MQP_ERR_NOTCONN /**< Lib isn't CONNECTED to server */ #define SL_MQTT_ERR_BADCALL MQP_ERR_BADCALL /**< Irrelevant call for LIB state */ #define SL_MQTT_ERR_CONTENT MQP_ERR_CONTENT /**< MSG / Data content has errors */ #define SL_MQTT_ERR_LIBQUIT MQP_ERR_LIBQUIT /**< Needs reboot library has quit */ #define SL_MQTT_ERR_REMLSTN MQP_ERR_REMLSTN /**< No remote listener for socket */
在 cc31xx_sl_net.c 的 comm_open()函数中,使用 sl_NetAppDnsGetHostByName 检索服务器 URL 的 IP 地址。 如果返回错误、将打印错误语句、套接字关闭、返回-1。
// do tcp connection
// get the ip address of server to do tcp connect
if ((nwconn_opts & DEV_NETCONN_OPT_URL) != 0) {
// server address is a URL
Status = sl_NetAppDnsGetHostByName((_i8*) server_addr,
strlen(server_addr), (_u32*) &uiIP, SL_AF_INET);
if (Status < 0) {
PRINTF("\n\r ERROR: Could not resolve the ip address of the"
" server \n\r");
sl_Close(MqttSocketFd);
return (-1);
}
如果使用无效的 CA 证书、您可能不会从 MQTT 库中看到特定错误(仅返回(-1))、但会从 simplelink API 返回 simplelink 错误代码(如 socket.h 中的错误代码)。 例如:
/* ssl tls security start with -300 offset */ #define SL_ESEC_CLOSE_NOTIFY (-300) /* ssl/tls alerts */ #define SL_ESEC_UNEXPECTED_MESSAGE (-310) /* ssl/tls alerts */ #define SL_ESEC_BAD_RECORD_MAC (-320) /* ssl/tls alerts */ #define SL_ESEC_DECRYPTION_FAILED (-321) /* ssl/tls alerts */ #define SL_ESEC_RECORD_OVERFLOW (-322) /* ssl/tls alerts */ #define SL_ESEC_DECOMPRESSION_FAILURE (-330) /* ssl/tls alerts */ #define SL_ESEC_HANDSHAKE_FAILURE (-340) /* ssl/tls alerts */ #define SL_ESEC_NO_CERTIFICATE (-341) /* ssl/tls alerts */ #define SL_ESEC_BAD_CERTIFICATE (-342) /* ssl/tls alerts */ #define SL_ESEC_UNSUPPORTED_CERTIFICATE (-343) /* ssl/tls alerts */ #define SL_ESEC_CERTIFICATE_REVOKED (-344) /* ssl/tls alerts */ #define SL_ESEC_CERTIFICATE_EXPIRED (-345) /* ssl/tls alerts */ #define SL_ESEC_CERTIFICATE_UNKNOWN (-346) /* ssl/tls alerts */ #define SL_ESEC_ILLEGAL_PARAMETER (-347) /* ssl/tls alerts */ #define SL_ESEC_UNKNOWN_CA (-348) /* ssl/tls alerts */ #define SL_ESEC_ACCESS_DENIED (-349) /* ssl/tls alerts */ #define SL_ESEC_DECODE_ERROR (-350) /* ssl/tls alerts */ #define SL_ESEC_DECRYPT_ERROR (-351) /* ssl/tls alerts */ #define SL_ESEC_EXPORT_RESTRICTION (-360) /* ssl/tls alerts */ #define SL_ESEC_PROTOCOL_VERSION (-370) /* ssl/tls alerts */ #define SL_ESEC_INSUFFICIENT_SECURITY (-371) /* ssl/tls alerts */ #define SL_ESEC_INTERNAL_ERROR (-380) /* ssl/tls alerts */ #define SL_ESEC_USER_CANCELLED (-390) /* ssl/tls alerts */ #define SL_ESEC_NO_RENEGOTIATION (-400) /* ssl/tls alerts */ #define SL_ESEC_UNSUPPORTED_EXTENSION (-410) /* ssl/tls alerts */ #define SL_ESEC_CERTIFICATE_UNOBTAINABLE (-411) /* ssl/tls alerts */ #define SL_ESEC_UNRECOGNIZED_NAME (-412) /* ssl/tls alerts */ #define SL_ESEC_BAD_CERTIFICATE_STATUS_RESPONSE (-413) /* ssl/tls alerts */ #define SL_ESEC_BAD_CERTIFICATE_HASH_VALUE (-414) /* ssl/tls alerts */ /* propierty secure */ #define SL_ESECGENERAL (-450) /* error secure level general error */ #define SL_ESECDECRYPT (-451) /* error secure level, decrypt recv packet fail */ #define SL_ESECCLOSED (-452) /* secure layrer is closed by other size , tcp is still connected */ #define SL_ESECSNOVERIFY (-453) /* Connected without server verification */ #define SL_ESECNOCAFILE (-454) /* error secure level CA file not found*/ #define SL_ESECMEMORY (-455) /* error secure level No memory space available */ #define SL_ESECBADCAFILE (-456) /* error secure level bad CA file */ #define SL_ESECBADCERTFILE (-457) /* error secure level bad Certificate file */ #define SL_ESECBADPRIVATEFILE (-458) /* error secure level bad private file */ #define SL_ESECBADDHFILE (-459) /* error secure level bad DH file */ #define SL_ESECT00MANYSSLOPENED (-460) /* MAX SSL Sockets are opened */ #define SL_ESECDATEERROR (-461) /* connected with certificate date verification error */ #define SL_ESECHANDSHAKETIMEDOUT (-462) /* connection timed out due to handshake time */
此致、
Jesse