chiark / gitweb /
Use the new official IANA-allocated port number 4070.
[tripe] / server / admin.c
index ecf222fd8d11cf53c3b33e981b66d9fa6bdb81f5..55ed82b3eedde575cf6fbc15467ceae05bd72ef8 100644 (file)
@@ -1059,21 +1059,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);