diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/starter/confread.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/starter/confread.c b/src/starter/confread.c index f30f2188c..6544b1ccd 100644 --- a/src/starter/confread.c +++ b/src/starter/confread.c @@ -268,22 +268,28 @@ static void kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token, port = sep + 1; } - proto = getprotobyname(value); - if (proto) + if (streq(value, "%any")) { - end->protocol = proto->p_proto; + end->protocol = 0; } else { - p = strtol(value, &endptr, 0); - if ((*value && *endptr) || p < 0 || p > 0xff) + proto = getprotobyname(value); + if (proto) { - DBG1(DBG_APP, "# bad protocol: %s=%s", name, value); - goto err; + end->protocol = proto->p_proto; + } + else + { + p = strtol(value, &endptr, 0); + if ((*value && *endptr) || p < 0 || p > 0xff) + { + DBG1(DBG_APP, "# bad protocol: %s=%s", name, value); + goto err; + } + end->protocol = (u_int8_t)p; } - end->protocol = (u_int8_t)p; } - if (streq(port, "%any")) { end->port = 0; |