MbedTLS: A few more minor changes

Yeah, I know, I said I was happy with it and wouldn't be changing it.
However, the new GNUTLS backend I'm working on has prompted this.

E.g. MbedTLS error codes and GNUTLS error codes are both negative ints,
     but GNUTLS will not tolerate positive input values. Let's treat
     both backends the same.
This commit is contained in:
Aaron Jones 2016-09-17 00:11:46 +00:00
parent 159d901e71
commit a3a25a4c8a
No known key found for this signature in database
GPG key ID: EC6F86EE9CD840B5

View file

@ -228,7 +228,7 @@ rb_ssl_accept_common(rb_fde_t *const F, void *const data)
lrb_assert(F->accept->callback != NULL); lrb_assert(F->accept->callback != NULL);
lrb_assert(F->ssl != NULL); lrb_assert(F->ssl != NULL);
int ret = mbedtls_ssl_handshake(SSL_P(F)); const int ret = mbedtls_ssl_handshake(SSL_P(F));
switch(ret) switch(ret)
{ {
@ -263,7 +263,7 @@ rb_ssl_connect_common(rb_fde_t *const F, void *const data)
lrb_assert(F != NULL); lrb_assert(F != NULL);
lrb_assert(F->ssl != NULL); lrb_assert(F->ssl != NULL);
int ret = mbedtls_ssl_handshake(SSL_P(F)); const int ret = mbedtls_ssl_handshake(SSL_P(F));
switch(ret) switch(ret)
{ {
@ -527,7 +527,8 @@ rb_get_random(void *const buf, const size_t length)
const char * const char *
rb_get_ssl_strerror(rb_fde_t *const F) rb_get_ssl_strerror(rb_fde_t *const F)
{ {
return rb_ssl_strerror((int) F->ssl_errno); const int err = (int) F->ssl_errno;
return rb_ssl_strerror(-err);
} }
int int
@ -608,7 +609,7 @@ rb_ssl_read(rb_fde_t *const F, void *const buf, const size_t count)
lrb_assert(F != NULL); lrb_assert(F != NULL);
lrb_assert(F->ssl != NULL); lrb_assert(F->ssl != NULL);
int ret = mbedtls_ssl_read(SSL_P(F), buf, count); const int ret = mbedtls_ssl_read(SSL_P(F), buf, count);
if(ret >= 0) if(ret >= 0)
return (ssize_t) ret; return (ssize_t) ret;
@ -634,7 +635,7 @@ rb_ssl_write(rb_fde_t *const F, const void *const buf, const size_t count)
lrb_assert(F != NULL); lrb_assert(F != NULL);
lrb_assert(F->ssl != NULL); lrb_assert(F->ssl != NULL);
int ret = mbedtls_ssl_write(SSL_P(F), buf, count); const int ret = mbedtls_ssl_write(SSL_P(F), buf, count);
if(ret >= 0) if(ret >= 0)
return (ssize_t) ret; return (ssize_t) ret;
@ -663,6 +664,7 @@ rb_ssl_write(rb_fde_t *const F, const void *const buf, const size_t count)
static void static void
rb_ssl_connect_realcb(rb_fde_t *const F, const int status, struct ssl_connect *const sconn) rb_ssl_connect_realcb(rb_fde_t *const F, const int status, struct ssl_connect *const sconn)
{ {
lrb_assert(F != NULL);
lrb_assert(F->connect != NULL); lrb_assert(F->connect != NULL);
F->connect->callback = sconn->callback; F->connect->callback = sconn->callback;
@ -712,7 +714,7 @@ rb_sock_net_recv(void *const context_ptr, unsigned char *const buf, const size_t
{ {
const int fd = rb_get_fd((rb_fde_t *)context_ptr); const int fd = rb_get_fd((rb_fde_t *)context_ptr);
int ret = (int) read(fd, buf, count); const int ret = (int) read(fd, buf, count);
if(ret < 0 && rb_ignore_errno(errno)) if(ret < 0 && rb_ignore_errno(errno))
return MBEDTLS_ERR_SSL_WANT_READ; return MBEDTLS_ERR_SSL_WANT_READ;
@ -725,7 +727,7 @@ rb_sock_net_xmit(void *const context_ptr, const unsigned char *const buf, const
{ {
const int fd = rb_get_fd((rb_fde_t *)context_ptr); const int fd = rb_get_fd((rb_fde_t *)context_ptr);
int ret = (int) write(fd, buf, count); const int ret = (int) write(fd, buf, count);
if(ret < 0 && rb_ignore_errno(errno)) if(ret < 0 && rb_ignore_errno(errno))
return MBEDTLS_ERR_SSL_WANT_WRITE; return MBEDTLS_ERR_SSL_WANT_WRITE;
@ -829,6 +831,7 @@ rb_ssl_start_connected(rb_fde_t *const F, CNCB *const callback, void *const data
F->connect = rb_malloc(sizeof(struct conndata)); F->connect = rb_malloc(sizeof(struct conndata));
F->connect->callback = callback; F->connect->callback = callback;
F->connect->data = data; F->connect->data = data;
F->type |= RB_FD_SSL; F->type |= RB_FD_SSL;
rb_settimeout(F, sconn->timeout, rb_ssl_tryconn_timeout_cb, sconn); rb_settimeout(F, sconn->timeout, rb_ssl_tryconn_timeout_cb, sconn);