-#ifdef HAVE_GNUTLS
+#if defined(HAVE_GNUTLS)
+
unsigned int ssl_be_init() {
signed int ret;
if((ret = gnutls_global_init()) != GNUTLS_E_SUCCESS) {
}
IOResult ssl_be_send(signed int fd, ssl_be_session_t *ssl, const char *buf, unsigned int *count_out) {
signed int res;
+ ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_send(): %s", buf);
res = gnutls_record_send(*ssl, buf, *count_out);
*count_out = 0;
- if(res == 0) return IO_FAILURE;
+ if(res == 0) {
+ ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_send(): failed (IO_FAILURE)");
+ return IO_FAILURE;
+ }
else if(res < 0) {
- if(res != GNUTLS_E_AGAIN && res != GNUTLS_E_INTERRUPTED) return IO_FAILURE;
- else return IO_BLOCKED;
+ if(res != GNUTLS_E_AGAIN && res != GNUTLS_E_INTERRUPTED) {
+ ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_send(): failed (IO_FAILURE)");
+ return IO_FAILURE;
+ } else {
+ ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_send(): failed (IO_BLOCKED)");
+ return IO_BLOCKED;
+ }
}
else {
*count_out = res;
+ ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_send(): successful (IO_SUCCESS) %d", res);
return IO_SUCCESS;
}
}
signed int res;
res = gnutls_record_recv(*ssl, buf, *count_out);
*count_out = 0;
- if(res == 0) return IO_FAILURE;
+ if(res == 0) {
+ ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_recv(): failed (IO_FAILURE)");
+ return IO_FAILURE;
+ }
else if(res < 0) {
- if(res == GNUTLS_E_AGAIN || res == GNUTLS_E_INTERRUPTED) return IO_BLOCKED;
- else return IO_FAILURE;
+ if(res == GNUTLS_E_AGAIN || res == GNUTLS_E_INTERRUPTED) {
+ ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_recv(): failed (IO_BLOCKED)");
+ return IO_BLOCKED;
+ } else {
+ ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_recv(): failed (IO_FAILURE)");
+ return IO_FAILURE;
+ }
}
else {
*count_out = res;
+ ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_recv(): successful (IO_SUCCESS)");
return IO_SUCCESS;
}
}