libiwinfo: reset ioctl_socket fd in iwinfo_close(), fixes random failures with multip...
authorJo-Philipp Wich <jow@openwrt.org>
Sun, 3 Feb 2013 12:03:24 +0000 (12:03 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 3 Feb 2013 12:03:24 +0000 (12:03 +0000)
SVN-Revision: 35471

package/network/utils/iwinfo/Makefile
package/network/utils/iwinfo/src/iwinfo_utils.c

index 479dcb5f5b6715c0c4d1010ec3bb65af31c012b2..f8a92dac4bf0e50d9e0655300b58b87b77e144cd 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2010-2012 Jo-Philipp Wich <xm@subsignal.org>
+# Copyright (C) 2010-2013 Jo-Philipp Wich <xm@subsignal.org>
 #
 # This is free software, licensed under the GPL 2 license.
 #
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libiwinfo
-PKG_RELEASE:=38
+PKG_RELEASE:=39
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 PKG_CONFIG_DEPENDS := \
index 164e51f847ad72c95f2b6348d2e2dd7872186ed1..6616f1489f0f2ff452dc01c637434df9ad21c04e 100644 (file)
@@ -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)