X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/e04c2d50fd96f3f31bc96851c55c6efecc10469c..ad99c6f61e103a0c665b5ac543a13dbddcd2b721:/server/admin.c diff --git a/server/admin.c b/server/admin.c index ecf222fd..135a589c 100644 --- a/server/admin.c +++ b/server/admin.c @@ -1,7 +1,5 @@ /* -*-c-*- * - * $Id$ - * * Admin interface for configuration * * (c) 2001 Straylight/Edgeware @@ -1059,21 +1057,25 @@ static void a_resolve(admin *a, admin_resop *r, const char *tag, r->addr = 0; r->func = func; if (mystrieq(av[i], "inet")) i++; - if (ac - i != 2) { - a_fail(a, "bad-addr-syntax", "[inet] ADDRESS PORT", A_END); + if (ac - i != 1 && ac - i != 2) { + a_fail(a, "bad-addr-syntax", "[inet] ADDRESS [PORT]", A_END); goto fail; } r->sa.sin.sin_family = AF_INET; r->sasz = sizeof(r->sa.sin); r->addr = xstrdup(av[i]); - pt = strtoul(av[i + 1], &p, 0); - if (*p) { - struct servent *s = getservbyname(av[i + 1], "udp"); - if (!s) { - a_fail(a, "unknown-service", "%s", av[i + 1], A_END); - goto fail; + if (!av[i + i]) + pt = TRIPE_PORT; + else { + pt = strtoul(av[i + 1], &p, 0); + if (*p) { + struct servent *s = getservbyname(av[i + 1], "udp"); + if (!s) { + a_fail(a, "unknown-service", "%s", av[i + 1], A_END); + goto fail; + } + pt = ntohs(s->s_port); } - pt = ntohs(s->s_port); } if (pt == 0 || pt >= 65536) { a_fail(a, "invalid-port", "%lu", pt, A_END);