Blame SOURCES/gnutls-3.3.29-cli-sni-hostname.patch

519d7d
diff --git a/src/cli-args.def b/src/cli-args.def
519d7d
index c661f458b..11d66ae8a 100644
519d7d
--- a/src/cli-args.def
519d7d
+++ b/src/cli-args.def
519d7d
@@ -80,6 +80,13 @@ flag = {
519d7d
     doc       = "Connect, establish a session and rehandshake immediately.";
519d7d
 };
519d7d
 
519d7d
+flag = {
519d7d
+    name      = sni-hostname;
519d7d
+    descrip   = "Server's hostname for server name indication extension";
519d7d
+    arg-type  = string;
519d7d
+    doc      = "Set explicitly the server name used in the TLS server name indication extension. That is useful when testing with servers setup on different DNS name than the intended. If not specified, the provided hostname is used.";
519d7d
+};
519d7d
+
519d7d
 flag = {
519d7d
     name      = starttls;
519d7d
     value     = s;
519d7d
diff --git a/src/cli.c b/src/cli.c
519d7d
index 82d8e1166..f3d159a29 100644
519d7d
--- a/src/cli.c
519d7d
+++ b/src/cli.c
519d7d
@@ -638,7 +638,10 @@ static gnutls_session_t init_tls_session(const char *hostname)
519d7d
 	/* allow the use of private ciphersuites.
519d7d
 	 */
519d7d
 	if (disable_extensions == 0 && disable_sni == 0) {
519d7d
-		if (hostname != NULL && is_ip(hostname) == 0)
519d7d
+		if (HAVE_OPT(SNI_HOSTNAME)) {
519d7d
+			gnutls_server_name_set(session, GNUTLS_NAME_DNS,
519d7d
+					       OPT_ARG(SNI_HOSTNAME), strlen(OPT_ARG(SNI_HOSTNAME)));
519d7d
+		} else if (hostname != NULL && is_ip(hostname) == 0)
519d7d
 			gnutls_server_name_set(session, GNUTLS_NAME_DNS,
519d7d
 					       hostname, strlen(hostname));
519d7d
 	}
519d7d
-- 
519d7d
2.14.3
519d7d