src/network/socket/qnativesocketengine_unix.cpp
changeset 37 758a864f9613
parent 33 3e2da88830cd
--- a/src/network/socket/qnativesocketengine_unix.cpp	Fri Sep 17 08:34:18 2010 +0300
+++ b/src/network/socket/qnativesocketengine_unix.cpp	Mon Oct 04 01:19:32 2010 +0300
@@ -352,10 +352,13 @@
         memset(&sockAddrIPv6, 0, sizeof(sockAddrIPv6));
         sockAddrIPv6.sin6_family = AF_INET6;
         sockAddrIPv6.sin6_port = htons(port);
+
+        QString scopeid = addr.scopeId();
+        bool ok;
+        sockAddrIPv6.sin6_scope_id = scopeid.toInt(&ok);
 #ifndef QT_NO_IPV6IFNAME
-        sockAddrIPv6.sin6_scope_id = ::if_nametoindex(addr.scopeId().toLatin1().data());
-#else
-        sockAddrIPv6.sin6_scope_id = addr.scopeId().toInt();
+        if (!ok)
+            sockAddrIPv6.sin6_scope_id = ::if_nametoindex(scopeid.toLatin1());
 #endif
         Q_IPV6ADDR ip6 = addr.toIPv6Address();
         memcpy(&sockAddrIPv6.sin6_addr.s6_addr, &ip6, sizeof(ip6));
@@ -562,7 +565,7 @@
 #else
     int acceptedDescriptor = qt_safe_accept(socketDescriptor, 0, 0);
 #endif
-    //check if we have vaild descriptor at all
+    //check if we have valid descriptor at all
     if(acceptedDescriptor > 0) {
         // Ensure that the socket is closed on exec*()
         ::fcntl(acceptedDescriptor, F_SETFD, FD_CLOEXEC);