From: pcarana Date: Mon, 19 Aug 2019 16:07:50 +0000 (-0500) Subject: Display server info on success, show prop name when int value has errors X-Git-Tag: v1.0.0^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d59fc6ec1efb8de5d71d0759d0ba1a854023b7e;p=thirdparty%2FFORT-validator.git Display server info on success, show prop name when int value has errors --- diff --git a/src/config/uint.c b/src/config/uint.c index 7d89b5ae..9d24ad12 100644 --- a/src/config/uint.c +++ b/src/config/uint.c @@ -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; diff --git a/src/rtr/rtr.c b/src/rtr/rtr.c index 9fdb1308..96c9d312 100644 --- a/src/rtr/rtr.c +++ b/src/rtr/rtr.c @@ -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 */