Change to slashes for host/port delimiter.

This commit is contained in:
Ian Gulliver
2016-02-17 11:10:01 -08:00
parent c98e97d8fc
commit d60a2c9869
2 changed files with 8 additions and 8 deletions

View File

@@ -30,7 +30,7 @@ static void print_usage(char *argv[]) {
"\n" "\n"
"Options:\n" "Options:\n"
"\t--help\n" "\t--help\n"
"\t--backend=HOST:PORT\n" "\t--backend=HOST/PORT\n"
"\t--dump=FORMAT\n" "\t--dump=FORMAT\n"
, argv[0]); , argv[0]);
} }
@@ -48,7 +48,7 @@ static bool parse_opts(int argc, char *argv[], int epoll_fd) {
switch (opt) { switch (opt) {
case 'b': case 'b':
// It would be really nice if libc had a standard way to split host:port. // It would be really nice if libc had a standard way to split host:port.
delim = strrchr(optarg, ':'); delim = strrchr(optarg, '/');
if (delim == NULL) { if (delim == NULL) {
print_usage(argv); print_usage(argv);
return false; return false;

View File

@@ -52,7 +52,7 @@ struct backend *backend_new(char *node, char *service, int epoll_fd) {
} }
static void backend_connect(struct backend *backend, int epoll_fd) { static void backend_connect(struct backend *backend, int epoll_fd) {
fprintf(stderr, "B %s: Connecting to %s %s...\n", backend->id, backend->node, backend->service); fprintf(stderr, "B %s: Resolving %s/%s...\n", backend->id, backend->node, backend->service);
struct addrinfo hints = { struct addrinfo hints = {
.ai_family = AF_UNSPEC, .ai_family = AF_UNSPEC,
@@ -61,7 +61,7 @@ static void backend_connect(struct backend *backend, int epoll_fd) {
int gai_err = getaddrinfo(backend->node, backend->service, &hints, &backend->addrs); int gai_err = getaddrinfo(backend->node, backend->service, &hints, &backend->addrs);
if (gai_err) { if (gai_err) {
fprintf(stderr, "B %s: getaddrinfo(%s %s): %s\n", backend->id, backend->node, backend->service, gai_strerror(gai_err)); fprintf(stderr, "B %s: getaddrinfo(%s/%s): %s\n", backend->id, backend->node, backend->service, gai_strerror(gai_err));
return; return;
} }
backend->addr = backend->addrs; backend->addr = backend->addrs;
@@ -73,7 +73,7 @@ static void backend_connect_result(struct backend *backend, int epoll_fd, int re
assert(getnameinfo(backend->addr->ai_addr, backend->addr->ai_addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0); assert(getnameinfo(backend->addr->ai_addr, backend->addr->ai_addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0);
switch (result) { switch (result) {
case 0: case 0:
fprintf(stderr, "B %s: Connected to %s %s\n", backend->id, hbuf, sbuf); fprintf(stderr, "B %s: Connected to %s/%s\n", backend->id, hbuf, sbuf);
freeaddrinfo(backend->addrs); freeaddrinfo(backend->addrs);
backend->peer.event_handler = backend_read; backend->peer.event_handler = backend_read;
peer_epoll_add((struct peer *) backend, epoll_fd, EPOLLIN); peer_epoll_add((struct peer *) backend, epoll_fd, EPOLLIN);
@@ -85,7 +85,7 @@ static void backend_connect_result(struct backend *backend, int epoll_fd, int re
break; break;
default: default:
fprintf(stderr, "B %s: Can't connect to %s %s: %s\n", backend->id, hbuf, sbuf, strerror(result)); fprintf(stderr, "B %s: Can't connect to %s/%s: %s\n", backend->id, hbuf, sbuf, strerror(result));
close(backend->peer.fd); close(backend->peer.fd);
backend->addr = backend->addr->ai_next; backend->addr = backend->addr->ai_next;
// Tail recursion :/ // Tail recursion :/
@@ -97,13 +97,13 @@ static void backend_connect_result(struct backend *backend, int epoll_fd, int re
static void backend_connect_next(struct backend *backend, int epoll_fd) { static void backend_connect_next(struct backend *backend, int epoll_fd) {
if (backend->addr == NULL) { if (backend->addr == NULL) {
freeaddrinfo(backend->addrs); freeaddrinfo(backend->addrs);
fprintf(stderr, "B %s: Can't connect to %s %s\n", backend->id, backend->node, backend->service); fprintf(stderr, "B %s: Can't connect to any addresses of %s/%s\n", backend->id, backend->node, backend->service);
return; return;
} }
char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
assert(getnameinfo(backend->addr->ai_addr, backend->addr->ai_addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0); assert(getnameinfo(backend->addr->ai_addr, backend->addr->ai_addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0);
fprintf(stderr, "B %s: Connecting to %s %s...\n", backend->id, hbuf, sbuf); fprintf(stderr, "B %s: Connecting to %s/%s...\n", backend->id, hbuf, sbuf);
backend->peer.fd = socket(backend->addr->ai_family, backend->addr->ai_socktype | SOCK_NONBLOCK, backend->addr->ai_protocol); backend->peer.fd = socket(backend->addr->ai_family, backend->addr->ai_socktype | SOCK_NONBLOCK, backend->addr->ai_protocol);
assert(backend->peer.fd >= 0); assert(backend->peer.fd >= 0);