diff options
Diffstat (limited to 'src/lib/libtls/tls_server.c')
-rw-r--r-- | src/lib/libtls/tls_server.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/lib/libtls/tls_server.c b/src/lib/libtls/tls_server.c index cbe064e2f5..55b19e472c 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.6 2015/03/31 12:21:27 jsing Exp $ */ | 1 | /* $OpenBSD: tls_server.c,v 1.7 2015/03/31 14:03:38 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -99,7 +99,7 @@ err: | |||
99 | } | 99 | } |
100 | 100 | ||
101 | int | 101 | int |
102 | tls_accept_socket(struct tls *ctx, struct tls **cctx, int socket) | 102 | tls_accept_fds(struct tls *ctx, struct tls **cctx, int fd_read, int fd_write) |
103 | { | 103 | { |
104 | struct tls *conn_ctx = *cctx; | 104 | struct tls *conn_ctx = *cctx; |
105 | int ret, err; | 105 | int ret, err; |
@@ -116,14 +116,13 @@ tls_accept_socket(struct tls *ctx, struct tls **cctx, int socket) | |||
116 | } | 116 | } |
117 | *cctx = conn_ctx; | 117 | *cctx = conn_ctx; |
118 | 118 | ||
119 | conn_ctx->socket = socket; | ||
120 | |||
121 | if ((conn_ctx->ssl_conn = SSL_new(ctx->ssl_ctx)) == NULL) { | 119 | if ((conn_ctx->ssl_conn = SSL_new(ctx->ssl_ctx)) == NULL) { |
122 | tls_set_error(ctx, "ssl failure"); | 120 | tls_set_error(ctx, "ssl failure"); |
123 | goto err; | 121 | goto err; |
124 | } | 122 | } |
125 | 123 | ||
126 | if (SSL_set_fd(conn_ctx->ssl_conn, socket) != 1) { | 124 | if (SSL_set_rfd(conn_ctx->ssl_conn, fd_read) != 1 || |
125 | SSL_set_wfd(conn_ctx->ssl_conn, fd_write) != 1) { | ||
127 | tls_set_error(ctx, "ssl set fd failure"); | 126 | tls_set_error(ctx, "ssl set fd failure"); |
128 | goto err; | 127 | goto err; |
129 | } | 128 | } |
@@ -143,3 +142,15 @@ tls_accept_socket(struct tls *ctx, struct tls **cctx, int socket) | |||
143 | err: | 142 | err: |
144 | return (-1); | 143 | return (-1); |
145 | } | 144 | } |
145 | |||
146 | int | ||
147 | tls_accept_socket(struct tls *ctx, struct tls **cctx, int socket) | ||
148 | { | ||
149 | int rv; | ||
150 | |||
151 | rv = tls_accept_fds(ctx, cctx, socket, socket); | ||
152 | if (*cctx != NULL) | ||
153 | (*cctx)->socket = socket; | ||
154 | |||
155 | return (rv); | ||
156 | } | ||