forked from wolfSSL/wolfssl
Fixes based on peer review feedback. Fix to only include the non-blocking / select timeout functions when HAVE_IO_TIMEOUT is defined. Fix to only include TCP connect if HAVE_GETADDRINFO or HAVE_SOCKADDR defined. Cleanup of the “struct sockaddr*” to use typedef with HAVE_SOCKADDR. Moved helpful XINET_* and XHTONS/XNTOHS macros to io.h.
This commit is contained in:
207
src/io.c
207
src/io.c
@ -239,7 +239,7 @@ int EmbedReceiveFrom(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
|||||||
int err;
|
int err;
|
||||||
int sd = dtlsCtx->rfd;
|
int sd = dtlsCtx->rfd;
|
||||||
int dtls_timeout = wolfSSL_dtls_get_current_timeout(ssl);
|
int dtls_timeout = wolfSSL_dtls_get_current_timeout(ssl);
|
||||||
struct sockaddr_storage peer;
|
SOCKADDR_S peer;
|
||||||
XSOCKLENT peerSz = sizeof(peer);
|
XSOCKLENT peerSz = sizeof(peer);
|
||||||
|
|
||||||
WOLFSSL_ENTER("EmbedReceiveFrom()");
|
WOLFSSL_ENTER("EmbedReceiveFrom()");
|
||||||
@ -262,7 +262,7 @@ int EmbedReceiveFrom(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
recvd = (int)RECVFROM_FUNCTION(sd, buf, sz, ssl->rflags,
|
recvd = (int)RECVFROM_FUNCTION(sd, buf, sz, ssl->rflags,
|
||||||
(struct sockaddr*)&peer, &peerSz);
|
(SOCKADDR*)&peer, &peerSz);
|
||||||
|
|
||||||
recvd = TranslateReturnCode(recvd, sd);
|
recvd = TranslateReturnCode(recvd, sd);
|
||||||
|
|
||||||
@ -324,7 +324,7 @@ int EmbedSendTo(WOLFSSL* ssl, char *buf, int sz, void *ctx)
|
|||||||
WOLFSSL_ENTER("EmbedSendTo()");
|
WOLFSSL_ENTER("EmbedSendTo()");
|
||||||
|
|
||||||
sent = (int)SENDTO_FUNCTION(sd, &buf[sz - len], len, ssl->wflags,
|
sent = (int)SENDTO_FUNCTION(sd, &buf[sz - len], len, ssl->wflags,
|
||||||
(const struct sockaddr*)dtlsCtx->peer.sa,
|
(const SOCKADDR*)dtlsCtx->peer.sa,
|
||||||
dtlsCtx->peer.sz);
|
dtlsCtx->peer.sz);
|
||||||
|
|
||||||
sent = TranslateReturnCode(sent, sd);
|
sent = TranslateReturnCode(sent, sd);
|
||||||
@ -365,7 +365,7 @@ int EmbedSendTo(WOLFSSL* ssl, char *buf, int sz, void *ctx)
|
|||||||
int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
|
int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
|
||||||
{
|
{
|
||||||
int sd = ssl->wfd;
|
int sd = ssl->wfd;
|
||||||
struct sockaddr_storage peer;
|
SOCKADDR_S peer;
|
||||||
XSOCKLENT peerSz = sizeof(peer);
|
XSOCKLENT peerSz = sizeof(peer);
|
||||||
byte digest[SHA_DIGEST_SIZE];
|
byte digest[SHA_DIGEST_SIZE];
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@ -373,7 +373,7 @@ int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
|
|||||||
(void)ctx;
|
(void)ctx;
|
||||||
|
|
||||||
XMEMSET(&peer, 0, sizeof(peer));
|
XMEMSET(&peer, 0, sizeof(peer));
|
||||||
if (getpeername(sd, (struct sockaddr*)&peer, &peerSz) != 0) {
|
if (getpeername(sd, (SOCKADDR*)&peer, &peerSz) != 0) {
|
||||||
WOLFSSL_MSG("getpeername failed in EmbedGenerateCookie");
|
WOLFSSL_MSG("getpeername failed in EmbedGenerateCookie");
|
||||||
return GEN_COOKIE_E;
|
return GEN_COOKIE_E;
|
||||||
}
|
}
|
||||||
@ -390,29 +390,6 @@ int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WOLFSSL_SESSION_EXPORT
|
#ifdef WOLFSSL_SESSION_EXPORT
|
||||||
#ifndef XINET_NTOP
|
|
||||||
#define XINET_NTOP(a,b,c,d) inet_ntop((a),(b),(c),(d))
|
|
||||||
#endif
|
|
||||||
#ifndef XINET_PTON
|
|
||||||
#define XINET_PTON(a,b,c) inet_pton((a),(b),(c))
|
|
||||||
#endif
|
|
||||||
#ifndef XHTONS
|
|
||||||
#define XHTONS(a) htons((a))
|
|
||||||
#endif
|
|
||||||
#ifndef XNTOHS
|
|
||||||
#define XNTOHS(a) ntohs((a))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef WOLFSSL_IP4
|
|
||||||
#define WOLFSSL_IP4 AF_INET
|
|
||||||
#endif
|
|
||||||
#ifndef WOLFSSL_IP6
|
|
||||||
#define WOLFSSL_IP6 AF_INET6
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct sockaddr_storage SOCKADDR_S;
|
|
||||||
typedef struct sockaddr_in SOCKADDR_IN;
|
|
||||||
typedef struct sockaddr_in6 SOCKADDR_IN6;
|
|
||||||
|
|
||||||
/* get the peer information in human readable form (ip, port, family)
|
/* get the peer information in human readable form (ip, port, family)
|
||||||
* default function assumes BSD sockets
|
* default function assumes BSD sockets
|
||||||
@ -532,79 +509,75 @@ int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
|
|||||||
|
|
||||||
#if defined(USE_WOLFSSL_IO)
|
#if defined(USE_WOLFSSL_IO)
|
||||||
|
|
||||||
#ifndef DEFAULT_TIMEOUT_SEC
|
#ifndef HAVE_IO_TIMEOUT
|
||||||
#define DEFAULT_TIMEOUT_SEC 0 /* no timeout */
|
#define io_timeout_sec 0
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_IO_TIMEOUT
|
|
||||||
static int io_timeout_sec = DEFAULT_TIMEOUT_SEC;
|
|
||||||
#else
|
#else
|
||||||
#define io_timeout_sec DEFAULT_TIMEOUT_SEC
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#ifndef DEFAULT_TIMEOUT_SEC
|
||||||
void wolfIO_SetTimeout(int to_sec)
|
#define DEFAULT_TIMEOUT_SEC 0 /* no timeout */
|
||||||
{
|
|
||||||
#ifdef HAVE_IO_TIMEOUT
|
|
||||||
io_timeout_sec = to_sec;
|
|
||||||
#else
|
|
||||||
(void)to_sec;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
int wolfIO_SetBlockingMode(SOCKET_T sockfd, int non_blocking)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
#ifdef USE_WINDOWS_API
|
|
||||||
unsigned long blocking = non_blocking;
|
|
||||||
ret = ioctlsocket(sockfd, FIONBIO, &blocking);
|
|
||||||
if (ret == SOCKET_ERROR)
|
|
||||||
ret = -1;
|
|
||||||
#else
|
|
||||||
ret = fcntl(sockfd, F_GETFL, 0);
|
|
||||||
if (ret >= 0) {
|
|
||||||
if (non_blocking)
|
|
||||||
ret |= O_NONBLOCK;
|
|
||||||
else
|
|
||||||
ret &= ~O_NONBLOCK;
|
|
||||||
ret = fcntl(sockfd, F_SETFL, ret);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (ret < 0) {
|
|
||||||
WOLFSSL_MSG("wolfIO_SetBlockingMode failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
/* 4204: non-constant aggregate initializer (nfds = sockfd + 1) */
|
|
||||||
#pragma warning(disable: 4204)
|
|
||||||
#endif
|
|
||||||
int wolfIO_Select(SOCKET_T sockfd, int to_sec)
|
|
||||||
{
|
|
||||||
fd_set fds;
|
|
||||||
SOCKET_T nfds = sockfd + 1;
|
|
||||||
struct timeval timeout = { (to_sec > 0) ? to_sec : 0, 0};
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
FD_ZERO(&fds);
|
|
||||||
FD_SET(sockfd, &fds);
|
|
||||||
|
|
||||||
ret = select(nfds, &fds, &fds, NULL, &timeout);
|
|
||||||
if (ret == 0) {
|
|
||||||
#ifdef DEBUG_HTTP
|
|
||||||
printf("Timeout: %d\n", ret);
|
|
||||||
#endif
|
#endif
|
||||||
return HTTP_TIMEOUT;
|
|
||||||
|
static int io_timeout_sec = DEFAULT_TIMEOUT_SEC;
|
||||||
|
|
||||||
|
void wolfIO_SetTimeout(int to_sec)
|
||||||
|
{
|
||||||
|
io_timeout_sec = to_sec;
|
||||||
}
|
}
|
||||||
else if (ret > 0) {
|
|
||||||
if (FD_ISSET(sockfd, &fds))
|
int wolfIO_SetBlockingMode(SOCKET_T sockfd, int non_blocking)
|
||||||
return 0;
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
#ifdef USE_WINDOWS_API
|
||||||
|
unsigned long blocking = non_blocking;
|
||||||
|
ret = ioctlsocket(sockfd, FIONBIO, &blocking);
|
||||||
|
if (ret == SOCKET_ERROR)
|
||||||
|
ret = -1;
|
||||||
|
#else
|
||||||
|
ret = fcntl(sockfd, F_GETFL, 0);
|
||||||
|
if (ret >= 0) {
|
||||||
|
if (non_blocking)
|
||||||
|
ret |= O_NONBLOCK;
|
||||||
|
else
|
||||||
|
ret &= ~O_NONBLOCK;
|
||||||
|
ret = fcntl(sockfd, F_SETFL, ret);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (ret < 0) {
|
||||||
|
WOLFSSL_MSG("wolfIO_SetBlockingMode failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
return SOCKET_ERROR_E;
|
|
||||||
}
|
#ifdef _MSC_VER
|
||||||
|
/* 4204: non-constant aggregate initializer (nfds = sockfd + 1) */
|
||||||
|
#pragma warning(disable: 4204)
|
||||||
|
#endif
|
||||||
|
int wolfIO_Select(SOCKET_T sockfd, int to_sec)
|
||||||
|
{
|
||||||
|
fd_set fds;
|
||||||
|
SOCKET_T nfds = sockfd + 1;
|
||||||
|
struct timeval timeout = { (to_sec > 0) ? to_sec : 0, 0};
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
FD_ZERO(&fds);
|
||||||
|
FD_SET(sockfd, &fds);
|
||||||
|
|
||||||
|
ret = select(nfds, &fds, &fds, NULL, &timeout);
|
||||||
|
if (ret == 0) {
|
||||||
|
#ifdef DEBUG_HTTP
|
||||||
|
printf("Timeout: %d\n", ret);
|
||||||
|
#endif
|
||||||
|
return HTTP_TIMEOUT;
|
||||||
|
}
|
||||||
|
else if (ret > 0) {
|
||||||
|
if (FD_ISSET(sockfd, &fds))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return SOCKET_ERROR_E;
|
||||||
|
}
|
||||||
|
#endif /* HAVE_IO_TIMEOUT */
|
||||||
|
|
||||||
static int wolfIO_Word16ToString(char* d, word16 number)
|
static int wolfIO_Word16ToString(char* d, word16 number)
|
||||||
{
|
{
|
||||||
@ -635,9 +608,19 @@ static int wolfIO_Word16ToString(char* d, word16 number)
|
|||||||
|
|
||||||
int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
|
int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
|
||||||
{
|
{
|
||||||
|
#if defined(HAVE_GETADDRINFO) || defined(HAVE_SOCKADDR)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
struct sockaddr_storage addr;
|
SOCKADDR_S addr;
|
||||||
int sockaddr_len = sizeof(struct sockaddr_in);
|
int sockaddr_len = sizeof(SOCKADDR_IN);
|
||||||
|
#ifdef HAVE_GETADDRINFO
|
||||||
|
ADDRINFO hints;
|
||||||
|
ADDRINFO* answer = NULL;
|
||||||
|
char strPort[6];
|
||||||
|
#else
|
||||||
|
HOSTENT* entry;
|
||||||
|
SOCKADDR_IN *sin;
|
||||||
|
#endif
|
||||||
|
|
||||||
XMEMSET(&addr, 0, sizeof(addr));
|
XMEMSET(&addr, 0, sizeof(addr));
|
||||||
|
|
||||||
#ifdef WOLFIO_DEBUG
|
#ifdef WOLFIO_DEBUG
|
||||||
@ -645,11 +628,6 @@ int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_GETADDRINFO
|
#ifdef HAVE_GETADDRINFO
|
||||||
{
|
|
||||||
struct addrinfo hints;
|
|
||||||
struct addrinfo* answer = NULL;
|
|
||||||
char strPort[6];
|
|
||||||
|
|
||||||
XMEMSET(&hints, 0, sizeof(hints));
|
XMEMSET(&hints, 0, sizeof(hints));
|
||||||
hints.ai_family = AF_UNSPEC;
|
hints.ai_family = AF_UNSPEC;
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
@ -668,16 +646,13 @@ int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
|
|||||||
sockaddr_len = answer->ai_addrlen;
|
sockaddr_len = answer->ai_addrlen;
|
||||||
XMEMCPY(&addr, answer->ai_addr, sockaddr_len);
|
XMEMCPY(&addr, answer->ai_addr, sockaddr_len);
|
||||||
freeaddrinfo(answer);
|
freeaddrinfo(answer);
|
||||||
|
#else
|
||||||
}
|
entry = gethostbyname(ip);
|
||||||
#else /* HAVE_GETADDRINFO */
|
sin = (SOCKADDR_IN *)&addr;
|
||||||
{
|
|
||||||
struct hostent* entry = gethostbyname(ip);
|
|
||||||
struct sockaddr_in *sin = (struct sockaddr_in *)&addr;
|
|
||||||
|
|
||||||
if (entry) {
|
if (entry) {
|
||||||
sin->sin_family = AF_INET;
|
sin->sin_family = AF_INET;
|
||||||
sin->sin_port = htons(port);
|
sin->sin_port = XHTONS(port);
|
||||||
XMEMCPY(&sin->sin_addr.s_addr, entry->h_addr_list[0],
|
XMEMCPY(&sin->sin_addr.s_addr, entry->h_addr_list[0],
|
||||||
entry->h_length);
|
entry->h_length);
|
||||||
}
|
}
|
||||||
@ -686,7 +661,7 @@ int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* HAVE_GETADDRINFO */
|
#endif
|
||||||
|
|
||||||
*sockfd = (SOCKET_T)socket(addr.ss_family, SOCK_STREAM, 0);
|
*sockfd = (SOCKET_T)socket(addr.ss_family, SOCK_STREAM, 0);
|
||||||
|
|
||||||
@ -711,7 +686,7 @@ int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
|
|||||||
(void)to_sec;
|
(void)to_sec;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = connect(*sockfd, (struct sockaddr *)&addr, sockaddr_len);
|
ret = connect(*sockfd, (SOCKADDR *)&addr, sockaddr_len);
|
||||||
#ifdef HAVE_IO_TIMEOUT
|
#ifdef HAVE_IO_TIMEOUT
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
if ((errno == EINPROGRESS) && (to_sec > 0)) {
|
if ((errno == EINPROGRESS) && (to_sec > 0)) {
|
||||||
@ -727,8 +702,14 @@ int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, word16 port, int to_sec)
|
|||||||
WOLFSSL_MSG("Responder tcp connect failed");
|
WOLFSSL_MSG("Responder tcp connect failed");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
#else
|
||||||
|
(void)sockfd;
|
||||||
|
(void)ip;
|
||||||
|
(void)port;
|
||||||
|
(void)to_sec;
|
||||||
|
return -1;
|
||||||
|
#endif /* HAVE_GETADDRINFO || HAVE_SOCKADDR */
|
||||||
}
|
}
|
||||||
|
|
||||||
int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags)
|
int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags)
|
||||||
|
43
wolfssl/io.h
43
wolfssl/io.h
@ -224,6 +224,7 @@
|
|||||||
#else
|
#else
|
||||||
#define SEND_FUNCTION send
|
#define SEND_FUNCTION send
|
||||||
#define RECV_FUNCTION recv
|
#define RECV_FUNCTION recv
|
||||||
|
#define HAVE_SOCKADDR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_WINDOWS_API
|
#ifdef USE_WINDOWS_API
|
||||||
@ -232,10 +233,46 @@
|
|||||||
typedef int SOCKET_T;
|
typedef int SOCKET_T;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Socket Addr Support */
|
||||||
|
#ifdef HAVE_SOCKADDR
|
||||||
|
typedef struct sockaddr SOCKADDR;
|
||||||
|
typedef struct sockaddr_storage SOCKADDR_S;
|
||||||
|
typedef struct sockaddr_in SOCKADDR_IN;
|
||||||
|
typedef struct sockaddr_in6 SOCKADDR_IN6;
|
||||||
|
typedef struct hostent HOSTENT;
|
||||||
|
#endif /* HAVE_SOCKADDR */
|
||||||
|
|
||||||
|
#ifdef HAVE_GETADDRINFO
|
||||||
|
typedef struct addrinfo ADDRINFO;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef XINET_NTOP
|
||||||
|
#define XINET_NTOP(a,b,c,d) inet_ntop((a),(b),(c),(d))
|
||||||
|
#endif
|
||||||
|
#ifndef XINET_PTON
|
||||||
|
#define XINET_PTON(a,b,c) inet_pton((a),(b),(c))
|
||||||
|
#endif
|
||||||
|
#ifndef XHTONS
|
||||||
|
#define XHTONS(a) htons((a))
|
||||||
|
#endif
|
||||||
|
#ifndef XNTOHS
|
||||||
|
#define XNTOHS(a) ntohs((a))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WOLFSSL_IP4
|
||||||
|
#define WOLFSSL_IP4 AF_INET
|
||||||
|
#endif
|
||||||
|
#ifndef WOLFSSL_IP6
|
||||||
|
#define WOLFSSL_IP6 AF_INET6
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* IO API's */
|
/* IO API's */
|
||||||
WOLFSSL_API int wolfIO_SetBlockingMode(SOCKET_T sockfd, int non_blocking);
|
#ifdef HAVE_IO_TIMEOUT
|
||||||
WOLFSSL_API void wolfIO_SetTimeout(int to_sec);;
|
WOLFSSL_API int wolfIO_SetBlockingMode(SOCKET_T sockfd, int non_blocking);
|
||||||
WOLFSSL_API int wolfIO_Select(SOCKET_T sockfd, int to_sec);
|
WOLFSSL_API void wolfIO_SetTimeout(int to_sec);;
|
||||||
|
WOLFSSL_API int wolfIO_Select(SOCKET_T sockfd, int to_sec);
|
||||||
|
#endif
|
||||||
WOLFSSL_API int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip,
|
WOLFSSL_API int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip,
|
||||||
unsigned short port, int to_sec);
|
unsigned short port, int to_sec);
|
||||||
WOLFSSL_API int wolfIO_Send(SOCKET_T sd, char *buf, int sz, int wrFlags);
|
WOLFSSL_API int wolfIO_Send(SOCKET_T sd, char *buf, int sz, int wrFlags);
|
||||||
|
@ -624,7 +624,7 @@ static INLINE void build_addr(SOCKADDR_IN_T* addr, const char* peer,
|
|||||||
#else
|
#else
|
||||||
addr->sin_family = AF_INET_V;
|
addr->sin_family = AF_INET_V;
|
||||||
#endif
|
#endif
|
||||||
addr->sin_port = htons(port);
|
addr->sin_port = XHTONS(port);
|
||||||
if (peer == INADDR_ANY)
|
if (peer == INADDR_ANY)
|
||||||
addr->sin_addr.s_addr = INADDR_ANY;
|
addr->sin_addr.s_addr = INADDR_ANY;
|
||||||
else {
|
else {
|
||||||
@ -633,7 +633,7 @@ static INLINE void build_addr(SOCKADDR_IN_T* addr, const char* peer,
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
addr->sin6_family = AF_INET_V;
|
addr->sin6_family = AF_INET_V;
|
||||||
addr->sin6_port = htons(port);
|
addr->sin6_port = XHTONS(port);
|
||||||
if (peer == INADDR_ANY)
|
if (peer == INADDR_ANY)
|
||||||
addr->sin6_addr = in6addr_any;
|
addr->sin6_addr = in6addr_any;
|
||||||
else {
|
else {
|
||||||
@ -824,9 +824,9 @@ static INLINE void tcp_listen(SOCKET_T* sockfd, word16* port, int useAnyAddr,
|
|||||||
socklen_t len = sizeof(addr);
|
socklen_t len = sizeof(addr);
|
||||||
if (getsockname(*sockfd, (struct sockaddr*)&addr, &len) == 0) {
|
if (getsockname(*sockfd, (struct sockaddr*)&addr, &len) == 0) {
|
||||||
#ifndef TEST_IPV6
|
#ifndef TEST_IPV6
|
||||||
*port = ntohs(addr.sin_port);
|
*port = XNTOHS(addr.sin_port);
|
||||||
#else
|
#else
|
||||||
*port = ntohs(addr.sin6_port);
|
*port = XNTOHS(addr.sin6_port);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -885,9 +885,9 @@ static INLINE void udp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd,
|
|||||||
socklen_t len = sizeof(addr);
|
socklen_t len = sizeof(addr);
|
||||||
if (getsockname(*sockfd, (struct sockaddr*)&addr, &len) == 0) {
|
if (getsockname(*sockfd, (struct sockaddr*)&addr, &len) == 0) {
|
||||||
#ifndef TEST_IPV6
|
#ifndef TEST_IPV6
|
||||||
port = ntohs(addr.sin_port);
|
port = XNTOHS(addr.sin_port);
|
||||||
#else
|
#else
|
||||||
port = ntohs(addr.sin6_port);
|
port = XNTOHS(addr.sin6_port);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2028,7 +2028,7 @@ static INLINE const char* mymktemp(char *tempfn, int len, int num)
|
|||||||
(void)userCtx;
|
(void)userCtx;
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
word16 sLen = htons(inLen);
|
word16 sLen = XHTONS(inLen);
|
||||||
byte aad[WOLFSSL_TICKET_NAME_SZ + WOLFSSL_TICKET_IV_SZ + 2];
|
byte aad[WOLFSSL_TICKET_NAME_SZ + WOLFSSL_TICKET_IV_SZ + 2];
|
||||||
int aadSz = WOLFSSL_TICKET_NAME_SZ + WOLFSSL_TICKET_IV_SZ + 2;
|
int aadSz = WOLFSSL_TICKET_NAME_SZ + WOLFSSL_TICKET_IV_SZ + 2;
|
||||||
byte* tmp = aad;
|
byte* tmp = aad;
|
||||||
|
Reference in New Issue
Block a user