From 4f1d9c70671aa7b7f1a66cf86acafe173c33cbfc Mon Sep 17 00:00:00 2001
From: Jo-Philipp Wich <jow@openwrt.org>
Date: Sun, 3 Feb 2013 12:03:24 +0000
Subject: libiwinfo: reset ioctl_socket fd in iwinfo_close(), fixes random
 failures with multiple cycles of iwinfo_finish() / iwinfo_backend()

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35471 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/network/utils/iwinfo/src/iwinfo_utils.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

(limited to 'package/network/utils/iwinfo/src')

diff --git a/package/network/utils/iwinfo/src/iwinfo_utils.c b/package/network/utils/iwinfo/src/iwinfo_utils.c
index 164e51f847..6616f1489f 100644
--- a/package/network/utils/iwinfo/src/iwinfo_utils.c
+++ b/package/network/utils/iwinfo/src/iwinfo_utils.c
@@ -28,7 +28,7 @@ static int ioctl_socket = -1;
 static int iwinfo_ioctl_socket(void)
 {
 	/* Prepare socket */
-	if( ioctl_socket == -1 )
+	if (ioctl_socket == -1)
 	{
 		ioctl_socket = socket(AF_INET, SOCK_DGRAM, 0);
 		fcntl(ioctl_socket, F_SETFD, fcntl(ioctl_socket, F_GETFD) | FD_CLOEXEC);
@@ -82,7 +82,7 @@ int iwinfo_ifup(const char *ifname)
 
 	strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
 
-	if( iwinfo_ioctl(SIOCGIFFLAGS, &ifr) )
+	if (iwinfo_ioctl(SIOCGIFFLAGS, &ifr))
 		return 0;
 
 	ifr.ifr_flags |= (IFF_UP | IFF_RUNNING);
@@ -96,7 +96,7 @@ int iwinfo_ifdown(const char *ifname)
 
 	strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
 
-	if( iwinfo_ioctl(SIOCGIFFLAGS, &ifr) )
+	if (iwinfo_ioctl(SIOCGIFFLAGS, &ifr))
 		return 0;
 
 	ifr.ifr_flags &= ~(IFF_UP | IFF_RUNNING);
@@ -110,7 +110,7 @@ int iwinfo_ifmac(const char *ifname)
 
 	strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
 
-	if( iwinfo_ioctl(SIOCGIFHWADDR, &ifr) )
+	if (iwinfo_ioctl(SIOCGIFHWADDR, &ifr))
 		return 0;
 
 	ifr.ifr_hwaddr.sa_data[1]++;
@@ -121,8 +121,10 @@ int iwinfo_ifmac(const char *ifname)
 
 void iwinfo_close(void)
 {
-	if( ioctl_socket > -1 )
+	if (ioctl_socket > -1)
 		close(ioctl_socket);
+
+	ioctl_socket = -1;
 }
 
 struct iwinfo_hardware_entry * iwinfo_hardware(struct iwinfo_hardware_id *id)
-- 
cgit v1.2.3