1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-08 15:02:10 +03:00

first stab at a better SNI vs. request name matching, by accounting for serveralias and wildcards

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1698330 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Stefan Eissing
2015-08-28 13:00:52 +00:00
parent 9d99941373
commit cf6c7246d5
3 changed files with 61 additions and 49 deletions

View File

@@ -60,6 +60,52 @@ char *ssl_util_vhostid(apr_pool_t *p, server_rec *s)
return id;
}
/*
* Return TRUE iff the given servername matches the server record when
* selecting virtual hosts.
*/
BOOL ssl_util_vhost_matches(const char *servername, server_rec *s)
{
apr_array_header_t *names;
int i;
/* check ServerName */
if (!strcasecmp(servername, s->server_hostname)) {
return TRUE;
}
/*
* if not matched yet, check ServerAlias entries
* (adapted from vhost.c:matches_aliases())
*/
names = s->names;
if (names) {
char **name = (char **)names->elts;
for (i = 0; i < names->nelts; ++i) {
if (!name[i])
continue;
if (!strcasecmp(servername, name[i])) {
return TRUE;
}
}
}
/* if still no match, check ServerAlias entries with wildcards */
names = s->wild_names;
if (names) {
char **name = (char **)names->elts;
for (i = 0; i < names->nelts; ++i) {
if (!name[i])
continue;
if (!ap_strcasecmp_match(servername, name[i])) {
return TRUE;
}
}
}
return FALSE;
}
apr_file_t *ssl_util_ppopen(server_rec *s, apr_pool_t *p, const char *cmd,
const char * const *argv)
{