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:
@@ -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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user