X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/c7c9aa764d9cbdc653a2212e0ecad4fdf4ddcd1c..6af7e4faa6d9d612fb6cbcd2fc5dd226516367b5:/libratbox/src/gnutls.c diff --git a/libratbox/src/gnutls.c b/libratbox/src/gnutls.c index 51a25de..1b7f4d7 100644 --- a/libratbox/src/gnutls.c +++ b/libratbox/src/gnutls.c @@ -20,7 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA * - * $Id: gnutls.c 26092 2008-09-19 15:13:52Z androsyn $ + * $Id: gnutls.c 26296 2008-12-13 03:36:00Z androsyn $ */ #include @@ -108,27 +108,21 @@ rb_ssl_tryaccept(rb_fde_t *F, void *data) ret = do_ssl_handshake(F, rb_ssl_tryaccept); - switch (ret) - { - case -1: - F->accept->callback(F, RB_ERROR_SSL, NULL, 0, F->accept->data); - break; - case 0: - /* do_ssl_handshake does the rb_setselect stuff */ + /* do_ssl_handshake does the rb_setselect */ + if(ret == 0) return; - default: - break; - - } + ad = F->accept; + F->accept = NULL; rb_settimeout(F, 0, NULL, NULL); rb_setselect(F, RB_SELECT_READ | RB_SELECT_WRITE, NULL, NULL); + + if(ret > 0) + ad->callback(F, RB_OK, (struct sockaddr *)&ad->S, ad->addrlen, ad->data); + else + ad->callback(F, RB_ERROR_SSL, NULL, 0, ad->data); - ad = F->accept; - F->accept = NULL; - ad->callback(F, RB_OK, (struct sockaddr *)&ad->S, ad->addrlen, ad->data); rb_free(ad); - } void @@ -502,10 +496,25 @@ rb_get_ssl_strerror(rb_fde_t *F) return gnutls_strerror(F->ssl_errno); } +int +rb_get_ssl_certfp(rb_fde_t *F, uint8_t certfp[RB_SSL_CERTFP_LEN]) +{ + /* XXX implement this for gnutls */ + return 0; +} + int rb_supports_ssl(void) { return 1; } +void +rb_get_ssl_info(char *buf, size_t len) +{ + rb_snprintf(buf, len, "GNUTLS: compiled (%s), library(%s)", + LIBGNUTLS_VERSION, gnutls_check_version(NULL)); +} + + #endif /* HAVE_GNUTLS */