[openssl-commits] [openssl] master update
Richard Levitte
levitte at openssl.org
Thu Feb 11 13:13:05 UTC 2016
The branch master has been updated
via d94c444bcdc12f63ed122fa7ad0d1b71fa319ce7 (commit)
via c72fb77ff2644cf7edc9821a431c2faf123d4daf (commit)
from 210ac6824670b4d207f6ea7257d21adb44986ee4 (commit)
- Log -----------------------------------------------------------------
commit d94c444bcdc12f63ed122fa7ad0d1b71fa319ce7
Author: Richard Levitte <levitte at openssl.org>
Date: Wed Feb 10 22:36:02 2016 +0100
The protocol variable has lost its use, remove it
Reviewed-by: Kurt Roeckx <kurt at openssl.org>
commit c72fb77ff2644cf7edc9821a431c2faf123d4daf
Author: Richard Levitte <levitte at openssl.org>
Date: Wed Feb 10 22:33:44 2016 +0100
Rework BIO_ADDRINFO_protocol() to return correct values
As noted already, some platforms don't fill in ai_protocol as
expected. To circumvent that, we have BIO_ADDRINFO_protocol() to
compute a sensible answer in that case.
Reviewed-by: Kurt Roeckx <kurt at openssl.org>
-----------------------------------------------------------------------
Summary of changes:
apps/s_socket.c | 14 ++------------
crypto/bio/b_addr.c | 20 ++++++++++++++++++--
2 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/apps/s_socket.c b/apps/s_socket.c
index 20c6626..6d781f4 100644
--- a/apps/s_socket.c
+++ b/apps/s_socket.c
@@ -167,11 +167,6 @@ int init_client(int *sock, const char *host, const char *port,
ret = 0;
for (ai = res; ai != NULL; ai = BIO_ADDRINFO_next(ai)) {
- int protocol = (type == SOCK_STREAM ? IPPROTO_TCP : IPPROTO_UDP);
-# ifdef AF_UNIX
- if (BIO_ADDRINFO_family(ai) == AF_UNIX)
- protocol = 0;
-# endif
/* Admitedly, these checks are quite paranoid, we should
not get anything in the BIO_ADDRINFO chain that we haven't
asked for */
@@ -179,7 +174,7 @@ int init_client(int *sock, const char *host, const char *port,
&& (type == 0 || type == BIO_ADDRINFO_socktype(res)));
*sock = BIO_socket(BIO_ADDRINFO_family(ai), BIO_ADDRINFO_socktype(ai),
- protocol, 0);
+ BIO_ADDRINFO_protocol(res), 0);
if (*sock == INVALID_SOCKET) {
/* Maybe the kernel doesn't support the socket family, even if
* BIO_lookup() added it in the returned result...
@@ -236,7 +231,6 @@ int do_server(int *accept_sock, const char *host, const char *port,
int i;
BIO_ADDRINFO *res = NULL;
int ret = 0;
- int protocol = (type == SOCK_STREAM ? IPPROTO_TCP : IPPROTO_UDP);
if (!BIO_sock_init())
return 0;
@@ -246,10 +240,6 @@ int do_server(int *accept_sock, const char *host, const char *port,
return 0;
}
-# ifdef AF_UNIX
- if (BIO_ADDRINFO_family(res) == AF_UNIX)
- protocol = 0;
-# endif
/* Admitedly, these checks are quite paranoid, we should
not get anything in the BIO_ADDRINFO chain that we haven't
asked for */
@@ -257,7 +247,7 @@ int do_server(int *accept_sock, const char *host, const char *port,
&& (type == 0 || type == BIO_ADDRINFO_socktype(res)));
asock = BIO_socket(BIO_ADDRINFO_family(res), BIO_ADDRINFO_socktype(res),
- protocol, 0);
+ BIO_ADDRINFO_protocol(res), 0);
if (asock == INVALID_SOCKET
|| !BIO_listen(asock, BIO_ADDRINFO_address(res), BIO_SOCK_REUSEADDR)) {
BIO_ADDRINFO_free(res);
diff --git a/crypto/bio/b_addr.c b/crypto/bio/b_addr.c
index 9131dcd..459443b 100644
--- a/crypto/bio/b_addr.c
+++ b/crypto/bio/b_addr.c
@@ -379,8 +379,24 @@ int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai)
int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai)
{
- if (bai != NULL)
- return bai->bai_protocol;
+ if (bai != NULL) {
+ if (bai->bai_protocol != 0)
+ return bai->bai_protocol;
+
+#ifdef AF_UNIX
+ if (bai->bai_family == AF_UNIX)
+ return 0;
+#endif
+
+ switch (bai->bai_socktype) {
+ case SOCK_STREAM:
+ return IPPROTO_TCP;
+ case SOCK_DGRAM:
+ return IPPROTO_UDP;
+ default:
+ break;
+ }
+ }
return 0;
}
More information about the openssl-commits
mailing list