|
@@ -865,6 +865,7 @@ int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
|
|
|
int wolfIO_TcpBind(SOCKET_T* sockfd, word16 port)
|
|
|
{
|
|
|
#ifdef HAVE_SOCKADDR
|
|
|
+ int ret = 0;
|
|
|
SOCKADDR_S addr;
|
|
|
int sockaddr_len = sizeof(SOCKADDR_IN);
|
|
|
SOCKADDR_IN *sin = (SOCKADDR_IN *)&addr;
|
|
@@ -880,39 +881,34 @@ int wolfIO_TcpBind(SOCKET_T* sockfd, word16 port)
|
|
|
sin->sin_port = XHTONS(port);
|
|
|
*sockfd = (SOCKET_T)socket(AF_INET, SOCK_STREAM, 0);
|
|
|
|
|
|
+ if (*sockfd < 0) {
|
|
|
+ WOLFSSL_MSG("socket failed");
|
|
|
+ *sockfd = SOCKET_INVALID;
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
#if !defined(USE_WINDOWS_API) && !defined(WOLFSSL_MDK_ARM)\
|
|
|
&& !defined(WOLFSSL_KEIL_TCP_NET) && !defined(WOLFSSL_ZEPHYR)
|
|
|
{
|
|
|
int optval = 1;
|
|
|
-#ifndef USE_WINDOWS_API
|
|
|
- socklen_t optlen = sizeof(optval);
|
|
|
-#else
|
|
|
- int optlen = sizeof(optval);
|
|
|
-#endif
|
|
|
- if (setsockopt(*sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, optlen) < 0) {
|
|
|
- WOLFSSL_MSG("setsockopt SO_REUSEADDR failed");
|
|
|
- CloseSocket(*sockfd);
|
|
|
- *sockfd = SOCKET_INVALID;
|
|
|
- return -1;
|
|
|
- }
|
|
|
+ XSOCKLENT optlen = sizeof(optval);
|
|
|
+ ret = setsockopt(*sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, optlen);
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
- if (bind(*sockfd, (SOCKADDR *)sin, sockaddr_len) != 0) {
|
|
|
- WOLFSSL_MSG("tcp bind failed");
|
|
|
- CloseSocket(*sockfd);
|
|
|
- *sockfd = SOCKET_INVALID;
|
|
|
- return -1;
|
|
|
- }
|
|
|
+ if (ret == 0)
|
|
|
+ ret = bind(*sockfd, (SOCKADDR *)sin, sockaddr_len);
|
|
|
+ if (ret == 0)
|
|
|
+ ret = listen(*sockfd, SOMAXCONN);
|
|
|
|
|
|
- if (listen(*sockfd, SOMAXCONN) != 0) {
|
|
|
- WOLFSSL_MSG("tcp listen failed");
|
|
|
+ if (ret != 0) {
|
|
|
+ WOLFSSL_MSG("wolfIO_TcpBind failed");
|
|
|
CloseSocket(*sockfd);
|
|
|
*sockfd = SOCKET_INVALID;
|
|
|
- return -1;
|
|
|
+ ret = -1;
|
|
|
}
|
|
|
|
|
|
- return 0;
|
|
|
+ return ret;
|
|
|
#else
|
|
|
(void)sockfd;
|
|
|
(void)port;
|
|
@@ -921,11 +917,7 @@ int wolfIO_TcpBind(SOCKET_T* sockfd, word16 port)
|
|
|
}
|
|
|
|
|
|
#ifdef HAVE_SOCKADDR
|
|
|
-#ifndef USE_WINDOWS_API
|
|
|
-int wolfIO_TcpAccept(SOCKET_T sockfd, SOCKADDR* peer_addr, socklen_t* peer_len)
|
|
|
-#else
|
|
|
-int wolfIO_TcpAccept(SOCKET_T sockfd, SOCKADDR* peer_addr, int* peer_len)
|
|
|
-#endif
|
|
|
+int wolfIO_TcpAccept(SOCKET_T sockfd, SOCKADDR* peer_addr, XSOCKLENT* peer_len)
|
|
|
{
|
|
|
return accept(sockfd, peer_addr, peer_len);
|
|
|
}
|