Introduction
Introduction Statistics Contact Development Disclaimer Help
dial: freeaddrinfo on failure on reconnect - irc - IRC client based on c9x.me/i…
git clone git://git.codemadness.org/irc
Log
Files
Refs
README
LICENSE
---
commit 3f3d05fe79f64a4312664e8607d5bd71b3e73b52
parent 2f85ad5b356490f957cd52d81f55624eff08bdd7
Author: Hiltjo Posthuma <[email protected]>
Date: Mon, 31 Jul 2017 18:28:05 +0200
dial: freeaddrinfo on failure on reconnect
Diffstat:
M irc.c | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
---
diff --git a/irc.c b/irc.c
@@ -234,6 +234,7 @@ static char *
dial(const char *host, const char *service)
{
struct addrinfo hints, *res = NULL, *rp;
+ char *err = 0;
int fd = -1, e;
memset(&hints, 0, sizeof(hints));
@@ -251,19 +252,28 @@ dial(const char *host, const char *service)
}
break;
}
- if (fd == -1)
- return "Cannot connect to host.";
+ if (fd == -1) {
+ err = "Cannot connect to host.";
+ goto fail;
+ }
srv.fd = fd;
if (ssl) {
- if (tls_init() < 0)
- return "Could not initialize TLS.";
- if (!(srv.tls = tls_client()))
- return "Could not initialize TLS context.";
- if (tls_connect_socket(srv.tls, srv.fd, host) < 0)
- return "Could not connect with ssl.";
+ if (tls_init() < 0) {
+ err = "Could not initialize TLS.";
+ goto fail;
+ }
+ if (!(srv.tls = tls_client())) {
+ err = "Could not initialize TLS context.";
+ goto fail;
+ }
+ if (tls_connect_socket(srv.tls, srv.fd, host) < 0) {
+ err = "Could not connect with ssl.";
+ goto fail;
+ }
}
+fail:
freeaddrinfo(res);
- return 0;
+ return err;
}
static void
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.