diff options
author | Matt Caswell <matt@openssl.org> | 2015-09-23 10:02:18 +0100 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2015-09-23 13:53:27 +0100 |
commit | d8249e99b9477ca059d5ed016fa49389bc0eb9e9 (patch) | |
tree | 2d955accffe7180865377ce757f7e78b365ccc91 /apps | |
parent | ca7256fbd947870101220735dc375862ec7eb9b1 (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')
-rw-r--r-- | apps/s_server.c | 9 |
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"); |