summaryrefslogtreecommitdiff
path: root/main/netsock2.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2011-06-14 17:22:26 +0000
committerRichard Mudgett <rmudgett@digium.com>2011-06-14 17:22:26 +0000
commit9ff8844c7f812ce4e5151beb746c0ed9a93d6cb2 (patch)
treeaa2067070f20632fd52f1044b0bfc5aa4b32efcc /main/netsock2.c
parentabd7ef817eb96193486f61848313d2e267c2b503 (diff)
Merged revisions 323392,323394 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r323392 | rmudgett | 2011-06-14 12:21:24 -0500 (Tue, 14 Jun 2011) | 6 lines Add more strict hostname checking to ast_dnsmgr_lookup(). Change suggested in review. Review: https://reviewboard.asterisk.org/r/1240/ ........ r323394 | rmudgett | 2011-06-14 12:21:39 -0500 (Tue, 14 Jun 2011) | 2 lines Made ast_sockaddr_split_hostport() port warning msgs more meaningful. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@323397 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/netsock2.c')
-rw-r--r--main/netsock2.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/main/netsock2.c b/main/netsock2.c
index 25f15a2fc..d6561fba2 100644
--- a/main/netsock2.c
+++ b/main/netsock2.c
@@ -121,8 +121,10 @@ char *ast_sockaddr_stringify_fmt(const struct ast_sockaddr *sa, int format)
int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags)
{
char *s = str;
+ char *orig_str = str;/* Original string in case the port presence is incorrect. */
+ char *host_end = NULL;/* Delay terminating the host in case the port presence is incorrect. */
- ast_debug(5, "Splitting '%s' gives...\n", str);
+ ast_debug(5, "Splitting '%s' into...\n", str);
*host = NULL;
*port = NULL;
if (*s == '[') {
@@ -130,7 +132,8 @@ int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags)
for (; *s && *s != ']'; ++s) {
}
if (*s == ']') {
- *s++ = '\0';
+ host_end = s;
+ ++s;
}
if (*s == ':') {
*port = s + 1;
@@ -148,11 +151,10 @@ int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags)
}
}
if (*port) {
- **port = '\0';
+ host_end = *port;
++*port;
}
}
- ast_debug(5, "...host '%s' and port '%s'.\n", *host, *port);
switch (flags & PARSE_PORT_MASK) {
case PARSE_PORT_IGNORE:
@@ -160,18 +162,23 @@ int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags)
break;
case PARSE_PORT_REQUIRE:
if (*port == NULL) {
- ast_log(LOG_WARNING, "missing port\n");
+ ast_log(LOG_WARNING, "Port missing in %s\n", orig_str);
return 0;
}
break;
case PARSE_PORT_FORBID:
if (*port != NULL) {
- ast_log(LOG_WARNING, "port disallowed\n");
+ ast_log(LOG_WARNING, "Port disallowed in %s\n", orig_str);
return 0;
}
break;
}
+ /* Can terminate the host string now if needed. */
+ if (host_end) {
+ *host_end = '\0';
+ }
+ ast_debug(5, "...host '%s' and port '%s'.\n", *host, *port ? *port : "");
return 1;
}