Browse Source

tls: register SNI callback for server default profile

- make SNI work for other profile when the default one does not have
server_name
- GH #1938

(cherry picked from commit 08d22b7bd95828554e30f4c23e906cd9d234e1cd)
Daniel-Constantin Mierla 6 năm trước cách đây
mục cha
commit
1d06499462
1 tập tin đã thay đổi với 9 bổ sung5 xóa
  1. 9 5
      src/modules/tls/tls_domain.c

+ 9 - 5
src/modules/tls/tls_domain.c

@@ -1061,17 +1061,20 @@ static int ksr_tls_fix_domain(tls_domain_t* d, tls_domain_t* def)
 		* check server domains for server_name extension and register
 		* callback function
 		*/
-		if ((d->type & TLS_DOMAIN_SRV) && d->server_name.len>0) {
+		if ((d->type & TLS_DOMAIN_SRV)
+				&& (d->server_name.len>0 || (d->type & TLS_DOMAIN_DEF))) {
 			if (!SSL_CTX_set_tlsext_servername_callback(d->ctx[i], tls_server_name_cb)) {
 				LM_ERR("register server_name callback handler for socket "
 					"[%s:%d], server_name='%s' failed for proc %d\n",
-					ip_addr2a(&d->ip), d->port, d->server_name.s, i);
+					ip_addr2a(&d->ip), d->port,
+					(d->server_name.s)?d->server_name.s:"<default>", i);
 				return -1;
 			}
 			if (!SSL_CTX_set_tlsext_servername_arg(d->ctx[i], d)) {
 				LM_ERR("register server_name callback handler data for socket "
 					"[%s:%d], server_name='%s' failed for proc %d\n",
-					ip_addr2a(&d->ip), d->port, d->server_name.s, i);
+					ip_addr2a(&d->ip), d->port,
+					(d->server_name.s)?d->server_name.s:"<default>", i);
 				return -1;
 			}
 		}
@@ -1079,10 +1082,11 @@ static int ksr_tls_fix_domain(tls_domain_t* d, tls_domain_t* def)
 	}
 
 #ifndef OPENSSL_NO_TLSEXT
-	if ((d->type & TLS_DOMAIN_SRV) && d->server_name.len>0) {
+	if ((d->type & TLS_DOMAIN_SRV)
+			&& (d->server_name.len>0 || (d->type & TLS_DOMAIN_DEF))) {
 		LM_NOTICE("registered server_name callback handler for socket "
 			"[%s:%d], server_name='%s' ...\n", ip_addr2a(&d->ip), d->port,
-			d->server_name.s);
+			(d->server_name.s)?d->server_name.s:"<default>");
 	}
 #endif