chiark / gitweb /
noip: Fix error reporting. 1.0.1
authorMark Wooding <mdw@distorted.org.uk>
Thu, 15 May 2008 18:53:09 +0000 (19:53 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 15 May 2008 18:53:09 +0000 (19:53 +0100)
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.

Makefile
debian/changelog
noip.c

index e26da5dc9bfcd576912ec67a11958a6b67bd0586..f69375a66ad6f0c145bb7cd3169cd1979addc16d 100644 (file)
--- 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
index 5d6068afcdde8f7ff8eb57d0d6156886fa0f2c89..44c48bc78cd449ac9523aa4514ddeec2d8064403 100644 (file)
@@ -1,3 +1,9 @@
+preload-hacks (1.0.1) experimental; urgency=low
+
+  * Fix noip to have more faithful error reporting.
+
+ -- Mark Wooding <mdw@distorted.org.uk>  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 a25d63e23426e9fe52b4089a83d01c6a3439274f..50284e16f77aff59785c1daca0ff401f8c60ef9d 100644 (file)
--- 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,