OSDN Git Service

* net.cc (get_inet_addr ): Close AF_UNIX socket file after reading.
authorcorinna <corinna>
Sat, 2 Dec 2000 21:28:59 +0000 (21:28 +0000)
committercorinna <corinna>
Sat, 2 Dec 2000 21:28:59 +0000 (21:28 +0000)
winsup/cygwin/ChangeLog
winsup/cygwin/net.cc

index 312ba6d..8565c25 100644 (file)
@@ -1,3 +1,7 @@
+Sat Dec  2 22:26:00 2000  Corinna Vinschen <corinna@vinschen.de>
+
+       * net.cc (get_inet_addr ): Close AF_UNIX socket file after reading.
+
 Wed Nov 29 18:25:53 2000  Kazuhiro Fujieda  <fujieda@jaist.ac.jp>
 
        * cygheap.cc (chgheap_root::operator =): Check root dir properly.
index 1832eb1..08d076a 100644 (file)
@@ -387,22 +387,26 @@ static int get_inet_addr (const struct sockaddr *in, int inlen,
     }
   else if (in->sa_family == AF_UNIX)
     {
-      sockaddr_in sin;
-      char buf[32];
-
-      memset (buf, 0, sizeof buf);
-      int fd = open (in->sa_data, O_RDONLY);
+      int fd = _open (in->sa_data, O_RDONLY);
       if (fd == -1)
        return 0;
-      if (read (fd, buf, sizeof buf) == -1)
-       return 0;
-      sin.sin_family = AF_INET;
-      sscanf (buf + strlen (SOCKET_COOKIE), "%hu", &sin.sin_port);
-      sin.sin_port = htons (sin.sin_port);
-      sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
-      *out = sin;
-      *outlen = sizeof sin;
-      return 1;
+
+      int ret = 0;
+      char buf[32];
+      memset (buf, 0, sizeof buf);
+      if (read (fd, buf, sizeof buf) != -1)
+        {
+         sockaddr_in sin;
+         sin.sin_family = AF_INET;
+         sscanf (buf + strlen (SOCKET_COOKIE), "%hu", &sin.sin_port);
+         sin.sin_port = htons (sin.sin_port);
+         sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
+         *out = sin;
+         *outlen = sizeof sin;
+         ret = 1;
+        }
+      _close (fd);
+      return ret;
     }
   else
     {