chiark / gitweb /
uopen.1: Reports wrong section in .TH line.
[preload-hacks] / noip.c
diff --git a/noip.c b/noip.c
index 2e2f1b10e579032321457ff71b7e734651df32fb..50284e16f77aff59785c1daca0ff401f8c60ef9d 100644 (file)
--- a/noip.c
+++ b/noip.c
@@ -206,7 +206,7 @@ static int acl_allows_p(aclnode *a, const struct sockaddr_in *sin)
 static void dump_acl(aclnode *a)
 {
   int act = ALLOW;
-  
+
   for (; a; a = a->next) {
     dump_aclnode(a);
     act = a->act;
@@ -508,7 +508,7 @@ static char *user(void)
 #define KWMATCHP(kw) (strncmp(p, kw, sizeof(kw) - 1) == 0 &&           \
                      !isalnum(UC(p[sizeof(kw) - 1])) &&                \
                      (p += sizeof(kw) - 1))
-  
+
 static void parse_ports(char **pp, unsigned short *min, unsigned short *max)
 {
   char *p = *pp, *q;
@@ -522,7 +522,7 @@ static void parse_ports(char **pp, unsigned short *min, unsigned short *max)
     NEXTNUMBER(q, del); *min = strtoul(q, 0, 0); RESCAN(del);
     SKIPSPC;
     if (*p == '-')
-      { NEXTNUMBER(q, del); *max = strtoul(q, 0, 0); RESCAN(del); }
+      { p++; NEXTNUMBER(q, del); *max = strtoul(q, 0, 0); RESCAN(del); }
     else
       *max = *min;
   }
@@ -741,7 +741,7 @@ int bind(int sk, const struct sockaddr *sa, socklen_t len)
 {
   struct sockaddr_un sun;
 
-  if (sa->sa_family == AF_INET) { 
+  if (sa->sa_family == AF_INET) {
     PRESERVING_ERRNO({
       if (acl_allows_p(bind_real, SIN(sa))) {
        if (fixup_real_ip_socket(sk))
@@ -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,