summaryrefslogtreecommitdiffstats
path: root/apps/s_server.c
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2015-09-23 10:02:18 +0100
committerMatt Caswell <matt@openssl.org>2015-09-23 13:53:27 +0100
commitd8249e99b9477ca059d5ed016fa49389bc0eb9e9 (patch)
tree2d955accffe7180865377ce757f7e78b365ccc91 /apps/s_server.c
parentca7256fbd947870101220735dc375862ec7eb9b1 (diff)
Fix s_server DTLSv1_listen issues
Use sockaddr_storage not sockaddr for the client IP address to allow for IPv6. Also fixed a section of code which was conditional on OPENSSL_NO_DTLS1 which should not have been. Reviewed-by: Andy Polyakov <appro@openssl.org>
Diffstat (limited to 'apps/s_server.c')
-rw-r--r--apps/s_server.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/apps/s_server.c b/apps/s_server.c
index dccd98f7eb..ec739645f1 100644
--- a/apps/s_server.c
+++ b/apps/s_server.c
@@ -261,8 +261,8 @@ static int enable_timeouts = 0;
static long socket_mtu;
#ifndef OPENSSL_NO_DTLS1
static int cert_chain = 0;
-static int dtlslisten = 0;
#endif
+static int dtlslisten = 0;
static BIO *serverinfo_in = NULL;
static const char *s_serverinfo_file = NULL;
@@ -2395,7 +2395,7 @@ static int init_ssl_connection(SSL *con)
unsigned next_proto_neg_len;
#endif
unsigned char *exportedkeymat;
- struct sockaddr client;
+ struct sockaddr_storage client;
#ifndef OPENSSL_NO_DTLS1
if(dtlslisten) {
@@ -2409,7 +2409,8 @@ static int init_ssl_connection(SSL *con)
BIO_get_fd(wbio, &fd);
}
- if(!wbio || connect(fd, &client, sizeof(struct sockaddr))) {
+ if(!wbio || connect(fd, (struct sockaddr *)&client,
+ sizeof(struct sockaddr_storage))) {
BIO_printf(bio_err, "ERROR - unable to connect\n");
return 0;
}
@@ -2447,13 +2448,11 @@ static int init_ssl_connection(SSL *con)
#endif
if (i <= 0) {
-#ifndef OPENSSL_NO_DTLS1
if ((dtlslisten && i == 0)
|| (!dtlslisten && BIO_sock_should_retry(i))) {
BIO_printf(bio_s_out, "DELAY\n");
return (1);
}
-#endif
BIO_printf(bio_err, "ERROR\n");