mirror of https://github.com/wolfSSL/wolfssl.git
added accessors for CYASSL members for use in send/recv callbacks
parent
cd0226924a
commit
dfb84dff37
|
@ -179,7 +179,8 @@ CYASSL_API CYASSL_CTX* CyaSSL_CTX_new(CYASSL_METHOD*);
|
||||||
CYASSL_API CYASSL* CyaSSL_new(CYASSL_CTX*);
|
CYASSL_API CYASSL* CyaSSL_new(CYASSL_CTX*);
|
||||||
CYASSL_API int CyaSSL_set_fd (CYASSL*, int);
|
CYASSL_API int CyaSSL_set_fd (CYASSL*, int);
|
||||||
CYASSL_API int CyaSSL_get_fd(const CYASSL*);
|
CYASSL_API int CyaSSL_get_fd(const CYASSL*);
|
||||||
CYASSL_API void CyaSSL_using_nonblock(CYASSL*);
|
CYASSL_API void CyaSSL_set_using_nonblock(CYASSL*, int);
|
||||||
|
CYASSL_API int CyaSSL_get_using_nonblock(CYASSL*);
|
||||||
CYASSL_API int CyaSSL_connect(CYASSL*); /* please see note at top of README
|
CYASSL_API int CyaSSL_connect(CYASSL*); /* please see note at top of README
|
||||||
if you get an error from connect */
|
if you get an error from connect */
|
||||||
CYASSL_API int CyaSSL_write(CYASSL*, const void*, int);
|
CYASSL_API int CyaSSL_write(CYASSL*, const void*, int);
|
||||||
|
@ -219,6 +220,7 @@ CYASSL_API int CyaSSL_set_cipher_list(CYASSL*, const char*);
|
||||||
/* Nonblocking DTLS helper functions */
|
/* Nonblocking DTLS helper functions */
|
||||||
CYASSL_API int CyaSSL_dtls_get_current_timeout(CYASSL* ssl);
|
CYASSL_API int CyaSSL_dtls_get_current_timeout(CYASSL* ssl);
|
||||||
CYASSL_API int CyaSSL_dtls_got_timeout(CYASSL* ssl);
|
CYASSL_API int CyaSSL_dtls_got_timeout(CYASSL* ssl);
|
||||||
|
CYASSL_API int CyaSSL_dtls(CYASSL* ssl);
|
||||||
|
|
||||||
CYASSL_API int CyaSSL_ERR_GET_REASON(int err);
|
CYASSL_API int CyaSSL_ERR_GET_REASON(int err);
|
||||||
CYASSL_API char* CyaSSL_ERR_error_string(unsigned long,char*);
|
CYASSL_API char* CyaSSL_ERR_error_string(unsigned long,char*);
|
||||||
|
|
23
src/io.c
23
src/io.c
|
@ -144,14 +144,19 @@ int EmbedReceive(CYASSL *ssl, char *buf, int sz, void *ctx)
|
||||||
int sd = *(int*)ctx;
|
int sd = *(int*)ctx;
|
||||||
|
|
||||||
#ifdef CYASSL_DTLS
|
#ifdef CYASSL_DTLS
|
||||||
if (ssl->options.dtls
|
{
|
||||||
&& !ssl->options.usingNonblock && ssl->dtls_timeout != 0) {
|
int dtls_timeout = CyaSSL_dtls_get_current_timeout(ssl);
|
||||||
#ifdef USE_WINDOWS_API
|
if (CyaSSL_dtls(ssl)
|
||||||
DWORD timeout = ssl->dtls_timeout;
|
&& !CyaSSL_get_using_nonblock(ssl)
|
||||||
#else
|
&& dtls_timeout != 0) {
|
||||||
struct timeval timeout = {ssl->dtls_timeout, 0};
|
#ifdef USE_WINDOWS_API
|
||||||
#endif
|
DWORD timeout = dtls_timeout;
|
||||||
setsockopt(sd, SOL_SOCKET,SO_RCVTIMEO, (char*)&timeout,sizeof(timeout));
|
#else
|
||||||
|
struct timeval timeout = {dtls_timeout, 0};
|
||||||
|
#endif
|
||||||
|
setsockopt(sd, SOL_SOCKET, SO_RCVTIMEO,
|
||||||
|
(char*)&timeout, sizeof(timeout));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -162,7 +167,7 @@ int EmbedReceive(CYASSL *ssl, char *buf, int sz, void *ctx)
|
||||||
CYASSL_MSG("Embed Receive error");
|
CYASSL_MSG("Embed Receive error");
|
||||||
|
|
||||||
if (err == SOCKET_EWOULDBLOCK || err == SOCKET_EAGAIN) {
|
if (err == SOCKET_EWOULDBLOCK || err == SOCKET_EAGAIN) {
|
||||||
if (ssl->options.usingNonblock) {
|
if (CyaSSL_get_using_nonblock(ssl)) {
|
||||||
CYASSL_MSG(" Would block");
|
CYASSL_MSG(" Would block");
|
||||||
return IO_ERR_WANT_READ;
|
return IO_ERR_WANT_READ;
|
||||||
}
|
}
|
||||||
|
|
20
src/ssl.c
20
src/ssl.c
|
@ -185,10 +185,24 @@ int CyaSSL_get_fd(const CYASSL* ssl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CyaSSL_using_nonblock(CYASSL* ssl)
|
void CyaSSL_set_using_nonblock(CYASSL* ssl, int nonblock)
|
||||||
{
|
{
|
||||||
CYASSL_ENTER("CyaSSL_using_nonblock");
|
CYASSL_ENTER("CyaSSL_set_using_nonblock");
|
||||||
ssl->options.usingNonblock = 1;
|
ssl->options.usingNonblock = (nonblock != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int CyaSSL_get_using_nonblock(CYASSL* ssl)
|
||||||
|
{
|
||||||
|
CYASSL_ENTER("CyaSSL_get_using_nonblock");
|
||||||
|
CYASSL_LEAVE("CyaSSL_get_using_nonblock", ssl->options.usingNonblock);
|
||||||
|
return ssl->options.usingNonblock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int CyaSSL_dtls(CYASSL* ssl)
|
||||||
|
{
|
||||||
|
return ssl->options.dtls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue