From: Mark Wooding Date: Thu, 15 May 2008 18:53:09 +0000 (+0100) Subject: noip: Fix error reporting. X-Git-Tag: 1.0.1^0 X-Git-Url: https://git.distorted.org.uk/~mdw/preload-hacks/commitdiff_plain/53390efff5b114455f31a10ff07274d4879d67a5 noip: Fix error reporting. Previously, noip would report a connection failure to an unbound socket as ENOENT (no such file or directory). This confuses Sage (among others, probably) which expect ECONNREFUSED. Bump the version to 1.0.1 as a result. --- diff --git a/Makefile b/Makefile index e26da5d..f69375a 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ PACKAGE = preload-hacks -VERSION = 1.0.0 +VERSION = 1.0.1 prefix = /usr/local exec_prefix = ${prefix} @@ -35,6 +35,7 @@ uopen.so: $(patsubst %.c, %.o, uopen.c) $(SCRIPTS): withlib.in for i in $(SCRIPTS); do \ sed "s/@lib@/$$i/" withlib.in >$$i.new || exit 1; \ + chmod +x $$i.new || exit 1; \ mv $$i.new $$i || exit 1; \ done install: all diff --git a/debian/changelog b/debian/changelog index 5d6068a..44c48bc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +preload-hacks (1.0.1) experimental; urgency=low + + * Fix noip to have more faithful error reporting. + + -- Mark Wooding Wed, 14 May 2008 08:56:31 +0100 + preload-hacks (1.0.0) experimental; urgency=low * Newly written preload hacks, specially for you. diff --git a/noip.c b/noip.c index a25d63e..50284e1 100644 --- a/noip.c +++ b/noip.c @@ -759,13 +759,22 @@ int bind(int sk, const struct sockaddr *sa, socklen_t len) int connect(int sk, const struct sockaddr *sa, socklen_t len) { struct sockaddr_un sun; + int fixup_p = 0; + int rc; if (sa->sa_family == AF_INET) { PRESERVING_ERRNO({ do_implicit_bind(sk, &sa, &len, &sun); + fixup_p = 1; }); } - return real_connect(sk, sa, len); + rc = real_connect(sk, sa, len); + if (rc < 0) { + switch (errno) { + case ENOENT: errno = ECONNREFUSED; break; + } + } + return rc; } ssize_t sendto(int sk, const void *buf, size_t len, int flags,