diff options
Diffstat (limited to 'src/lib/libtls/tls_server.c')
-rw-r--r-- | src/lib/libtls/tls_server.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/lib/libtls/tls_server.c b/src/lib/libtls/tls_server.c index 8d71d2790f..8f34ecdded 100644 --- a/src/lib/libtls/tls_server.c +++ b/src/lib/libtls/tls_server.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls_server.c,v 1.4 2015/02/07 06:19:26 jsing Exp $ */ | 1 | /* $OpenBSD: tls_server.c,v 1.5 2015/02/07 09:50:09 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -102,7 +102,7 @@ int | |||
102 | tls_accept_socket(struct tls *ctx, struct tls **cctx, int socket) | 102 | tls_accept_socket(struct tls *ctx, struct tls **cctx, int socket) |
103 | { | 103 | { |
104 | struct tls *conn_ctx = *cctx; | 104 | struct tls *conn_ctx = *cctx; |
105 | int ret, ssl_err; | 105 | int ret, err; |
106 | 106 | ||
107 | if ((ctx->flags & TLS_SERVER) == 0) { | 107 | if ((ctx->flags & TLS_SERVER) == 0) { |
108 | tls_set_error(ctx, "not a server context"); | 108 | tls_set_error(ctx, "not a server context"); |
@@ -131,16 +131,11 @@ tls_accept_socket(struct tls *ctx, struct tls **cctx, int socket) | |||
131 | } | 131 | } |
132 | 132 | ||
133 | if ((ret = SSL_accept(conn_ctx->ssl_conn)) != 1) { | 133 | if ((ret = SSL_accept(conn_ctx->ssl_conn)) != 1) { |
134 | ssl_err = SSL_get_error(conn_ctx->ssl_conn, ret); | 134 | err = tls_ssl_error(conn_ctx, ret, "accept"); |
135 | switch (ssl_err) { | 135 | if (err == TLS_READ_AGAIN || err == TLS_WRITE_AGAIN) { |
136 | case SSL_ERROR_WANT_READ: | 136 | return (err); |
137 | return (TLS_READ_AGAIN); | ||
138 | case SSL_ERROR_WANT_WRITE: | ||
139 | return (TLS_WRITE_AGAIN); | ||
140 | default: | ||
141 | tls_set_error(ctx, "TLS accept failed (%i)", ssl_err); | ||
142 | goto err; | ||
143 | } | 137 | } |
138 | goto err; | ||
144 | } | 139 | } |
145 | 140 | ||
146 | return (0); | 141 | return (0); |