diff options
Diffstat (limited to 'src/lib/libtls/tls_client.c')
-rw-r--r-- | src/lib/libtls/tls_client.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/lib/libtls/tls_client.c b/src/lib/libtls/tls_client.c index baa4805f57..682153ca65 100644 --- a/src/lib/libtls/tls_client.c +++ b/src/lib/libtls/tls_client.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls_client.c,v 1.14 2015/02/11 06:46:33 jsing Exp $ */ | 1 | /* $OpenBSD: tls_client.c,v 1.15 2015/02/11 07:01:10 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -83,6 +83,13 @@ tls_connect_host(struct tls *ctx, const char *host, const char *port, | |||
83 | int | 83 | int |
84 | tls_connect(struct tls *ctx, const char *host, const char *port) | 84 | tls_connect(struct tls *ctx, const char *host, const char *port) |
85 | { | 85 | { |
86 | return tls_connect_servername(ctx, host, port, NULL); | ||
87 | } | ||
88 | |||
89 | int | ||
90 | tls_connect_servername(struct tls *ctx, const char *host, const char *port, | ||
91 | const char *servername) | ||
92 | { | ||
86 | const char *h = NULL, *p = NULL; | 93 | const char *h = NULL, *p = NULL; |
87 | char *hs = NULL, *ps = NULL; | 94 | char *hs = NULL, *ps = NULL; |
88 | int rv = -1, s = -1, ret; | 95 | int rv = -1, s = -1, ret; |
@@ -128,7 +135,10 @@ tls_connect(struct tls *ctx, const char *host, const char *port) | |||
128 | (s = tls_connect_host(ctx, h, p, AF_UNSPEC, AI_ADDRCONFIG)) == -1) | 135 | (s = tls_connect_host(ctx, h, p, AF_UNSPEC, AI_ADDRCONFIG)) == -1) |
129 | goto err; | 136 | goto err; |
130 | 137 | ||
131 | if (tls_connect_socket(ctx, s, h) != 0) { | 138 | if (servername == NULL) |
139 | servername = h; | ||
140 | |||
141 | if (tls_connect_socket(ctx, s, servername) != 0) { | ||
132 | close(s); | 142 | close(s); |
133 | goto err; | 143 | goto err; |
134 | } | 144 | } |
@@ -136,7 +146,6 @@ tls_connect(struct tls *ctx, const char *host, const char *port) | |||
136 | rv = 0; | 146 | rv = 0; |
137 | 147 | ||
138 | err: | 148 | err: |
139 | |||
140 | free(hs); | 149 | free(hs); |
141 | free(ps); | 150 | free(ps); |
142 | 151 | ||