5359edc160de518d8e43fdd3448365c15b912c3c galt Mon Jul 22 11:48:10 2019 -0700 Added ipv6 support. Listening processes us hybrid dual stack feature of OS to simplify implementation and use a single listening socket. Works with both TCP and UDP. Parasol working. geoIp also updated and ready for IPv6. Should be invisible to most users, while providing connections via ipv6 where available. Supports both ipv4 and ipv6. diff --git src/lib/https.c src/lib/https.c index 5709d85..0be0daa 100644 --- src/lib/https.c +++ src/lib/https.c @@ -208,31 +208,31 @@ if(!ssl) { xerr("Can't locate SSL pointer"); goto cleanup; } /* Server Name Indication (SNI) Required to complete tls ssl negotiation for systems which house multiple domains. (SNI) This is common when serving HTTPS requests with a wildcard certificate (*.domain.tld). This line will allow the ssl connection to send the hostname at tls negotiation time. It tells the remote server which hostname the client is connecting to. The hostname must not be an IP address. */ -if (!internetIsDottedQuad(params->hostName)) +if (!isIpv4Address(params->hostName) && !isIpv6Address(params->hostName)) SSL_set_tlsext_host_name(ssl,params->hostName); BIO_set_nbio(sbio, 1); /* non-blocking mode */ while (1) { if (BIO_do_handshake(sbio) == 1) { break; /* Connected */ } if (! BIO_should_retry(sbio)) { xerr("BIO_do_handshake() failed"); char s[256]; safef(s, sizeof s, "SSL error: %s", ERR_reason_error_string(ERR_get_error()));