commit 4e600d3006d5b24f7bc35354d5d81cea5f52c6ff from: Omar Polo date: Mon Mar 29 12:30:02 2021 UTC simplify host resolution on !HAVE_ASR_RUN no functional changes intended commit - ff6cf34bf28b5e0205ea1abcf3b6fc9354c854b0 commit + 4e600d3006d5b24f7bc35354d5d81cea5f52c6ff blob - c4e2f245d76c9d74a2b1dcab970600484d4a8d02 blob + 06623a3dc018b8d1b8c139c665425201a478f306 --- gemini.c +++ gemini.c @@ -57,8 +57,7 @@ static void try_to_connect(int, short, void*); static void query_done(struct asr_result*, void*); static void async_conn_towards(struct req*); #else -static char *xasprintf(const char*, ...); -static int blocking_conn_towards(struct url*, char**); +static void blocking_conn_towards(struct req*); #endif static void close_with_err(struct req*, const char*); @@ -217,29 +216,14 @@ async_conn_towards(struct req *req) req->asrev = event_asr_run(q, query_done, req); } #else -static char * -xasprintf(const char *fmt, ...) +static void +blocking_conn_towards(struct req *req) { - va_list ap; - char *s; - - va_start(ap, fmt); - if (vasprintf(&s, fmt, ap) == -1) - s = NULL; - va_end(ap); - - return s; -} - -static int -blocking_conn_towards(struct url *url, char **err) -{ struct addrinfo hints, *servinfo, *p; + struct url *url = &req->url; int status, sock; const char *proto = "1965"; - *err = NULL; - if (*url->port != '\0') proto = url->port; @@ -248,9 +232,9 @@ blocking_conn_towards(struct url *url, char **err) hints.ai_socktype = SOCK_STREAM; if ((status = getaddrinfo(url->host, proto, &hints, &servinfo))) { - *err = xasprintf("failed to resolve %s: %s", + close_with_errf(req, "failed to resolve %s: %s", url->host, gai_strerror(status)); - return -1; + return; } sock = -1; @@ -261,14 +245,16 @@ blocking_conn_towards(struct url *url, char **err) break; close(sock); } + freeaddrinfo(servinfo); - if (sock == -1) - *err = xasprintf("couldn't connect to %s", url->host); - else - mark_nonblock(sock); + if (sock == -1) { + close_with_errf(req, "couldn't connect to %s", url->host); + return; + } - freeaddrinfo(servinfo); - return sock; + req->fd = sock; + mark_nonblock(req->fd); + setup_tls(req); } #endif @@ -567,16 +553,7 @@ handle_get(struct imsg *imsg, size_t datalen) #if HAVE_ASR_RUN async_conn_towards(req); #else - { - char *err = NULL; - - if ((req->fd = blocking_conn_towards(&req->url, &err)) == -1) { - close_with_err(req, err); - free(err); - return; - } - setup_tls(req); - } + blocking_conn_towards(req); #endif }