Skip to content

Commit

Permalink
Improve handling of overlapping aliases in APP commands
Browse files Browse the repository at this point in the history
Resolves MODCLUSTER-824
  • Loading branch information
jajik committed Oct 21, 2024
1 parent 2577249 commit bcda1b1
Showing 1 changed file with 19 additions and 13 deletions.
32 changes: 19 additions & 13 deletions native/mod_manager/mod_manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -1748,23 +1748,29 @@ static char * process_appl_cmd(request_rec *r, char **ptr, int status, int *errt
return (process_node_cmd(r, status, errtype, node));
}

/* Read the ID of the virtual host corresponding to the first Alias */
/* Go through the provided Aliases, the first Alias that matches an existing host gets used
* otherwise, a new host will be created
*/
hostinfo.node = node->mess.id;
hostinfo.id = 0;
if (vhost->host != NULL) {
char *s = hostinfo.host;
int j = 1;
strncpy(hostinfo.host, vhost->host, sizeof(hostinfo.host));
hostinfo.host[sizeof(hostinfo.host)-1] = '\0';
while (*s != ',' && j<sizeof(hostinfo.host)) {
j++;
s++;
}
*s = '\0';
} else
int start = 0;
i = 0;
while (host == NULL && i + start < strlen(vhost->host)) {
while (vhost->host[start+i] != ',' && vhost->host[start+i] != '\0') {
i++;
}

strncpy(hostinfo.host, vhost->host + start, i);
hostinfo.host[i] = '\0';
host = read_host(hoststatsmem, &hostinfo);
start = start + i + 1;
i = 0;
}
} else {
hostinfo.host[0] = '\0';
}

hostinfo.id = 0;
host = read_host(hoststatsmem, &hostinfo);
if (host == NULL) {
/* If REMOVE ignores it */
if (status == REMOVE)
Expand Down

0 comments on commit bcda1b1

Please sign in to comment.