]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Display server info on success, show prop name when int value has errors
authorpcarana <pc.moreno2099@gmail.com>
Mon, 19 Aug 2019 16:07:50 +0000 (11:07 -0500)
committerpcarana <pc.moreno2099@gmail.com>
Mon, 19 Aug 2019 16:07:50 +0000 (11:07 -0500)
src/config/uint.c
src/rtr/rtr.c

index 7d89b5aee297691f2196cc58ba83f727e5dcf5a0..9d24ad1299789943e7a126f7a4b85be9c01d8a75 100644 (file)
@@ -25,11 +25,13 @@ parse_argv_uint(struct option_field const *field, char const *str,
        errno = 0;
        parsed = strtoul(str, NULL, 10);
        if (errno)
-               return pr_errno(errno, "'%s' is not an unsigned integer", str);
+               return pr_errno(errno,
+                   "Value '%s' at '%s' is not an unsigned integer", str,
+                   field->name);
 
        if (parsed < field->min || field->max < parsed) {
-               return pr_err("'%lu' is out of bounds (%u-%u).", parsed,
-                   field->min, field->max);
+               return pr_err("Value '%lu' at '%s' is out of range (%u-%u).",
+                   parsed, field->name, field->min, field->max);
        }
 
        *((unsigned int *) result) = parsed;
index 9fdb1308f4045185c5658b0bec7169e80d163e61..96c9d312eb255014650b78ffb13ea48295146141 100644 (file)
@@ -86,6 +86,7 @@ create_server_socket(int *result)
 {
        struct addrinfo *addrs;
        struct addrinfo *addr;
+       unsigned long port;
        int fd; /* "file descriptor" */
        int error;
 
@@ -112,7 +113,18 @@ create_server_socket(int *result)
                        continue;
                }
 
-               printf("Success.\n");
+               error = getsockname(fd, addr->ai_addr, &addr->ai_addrlen);
+               if (error) {
+                       close(fd);
+                       freeaddrinfo(addrs);
+                       return pr_errno(errno, "getsockname() failed");
+               }
+
+               port = (unsigned char)(addr->ai_addr->sa_data[0]) << 8;
+               port += (unsigned char)(addr->ai_addr->sa_data[1]);
+               printf("Success, bound to address '%s', port '%ld'.\n",
+                   (addr->ai_canonname != NULL) ? addr->ai_canonname : "any",
+                   port);
                freeaddrinfo(addrs);
                *result = fd;
                return 0; /* Happy path */