summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBradley T. Hughes <bradley.hughes@nokia.com>2010-07-22 15:01:51 (GMT)
committerBradley T. Hughes <bradley.hughes@nokia.com>2010-09-01 12:24:42 (GMT)
commit11cb9c94db6e7c4d494faa071368179e1b4b4b4d (patch)
treeff2fb89896ce91e6276d7c51e19d4d7338e0606c
parent41d8edda671e42c916f45e6eb2716fd76982a121 (diff)
downloadQt-11cb9c94db6e7c4d494faa071368179e1b4b4b4d.zip
Qt-11cb9c94db6e7c4d494faa071368179e1b4b4b4d.tar.gz
Qt-11cb9c94db6e7c4d494faa071368179e1b4b4b4d.tar.bz2
Don't use WSAIoctl() to get/set the multicast socket options
According to the MSDN docs, we can just use setsockopt() and getsockopt() like we do on UNIX, even if we are using Winsock2.
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp38
1 files changed, 12 insertions, 26 deletions
diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp
index d2479f3..5580abc 100644
--- a/src/network/socket/qnativesocketengine_win.cpp
+++ b/src/network/socket/qnativesocketengine_win.cpp
@@ -402,19 +402,13 @@ int QNativeSocketEnginePrivate::option(QNativeSocketEngine::SocketOption opt) co
n = SO_KEEPALIVE;
break;
case QNativeSocketEngine::MulticastTtlOption:
- {
- unsigned long val = 0;
- if (WSAIoctl(socketDescriptor, SIO_MULTICAST_SCOPE, 0, 0, &val, sizeof(val), 0, 0 ,0) == 0)
- return val;
- return -1;
- }
+ level = IPPROTO_IP;
+ n = IP_MULTICAST_TTL;
+ break;
case QNativeSocketEngine::MulticastLoopbackOption:
- {
- unsigned long val = 0;
- if (WSAIoctl(socketDescriptor, SIO_MULTIPOINT_LOOPBACK, 0, 0, &val, sizeof(val), 0, 0, 0) == 0)
- return val;
- return -1;
- }
+ level = IPPROTO_IP;
+ n = IP_MULTICAST_LOOP;
+ break;
}
int v = -1;
@@ -476,21 +470,13 @@ bool QNativeSocketEnginePrivate::setOption(QNativeSocketEngine::SocketOption opt
n = SO_KEEPALIVE;
break;
case QNativeSocketEngine::MulticastTtlOption:
- {
- unsigned long val = v, outval;
- if (WSAIoctl(socketDescriptor, SIO_MULTICAST_SCOPE, &val, sizeof(val), &outval, sizeof(outval), 0, 0, 0) == 0)
- return true;
- WS_ERROR_DEBUG(WSAGetLastError());
- return false;
- }
+ level = IPPROTO_IP;
+ n = IP_MULTICAST_TTL;
+ break;
case QNativeSocketEngine::MulticastLoopbackOption:
- {
- unsigned long val = v, outval;
- if (WSAIoctl(socketDescriptor, SIO_MULTIPOINT_LOOPBACK, &val, sizeof(val), &outval, sizeof(outval), 0, 0, 0) == 0)
- return true;
- WS_ERROR_DEBUG(WSAGetLastError());
- return false;
- }
+ level = IPPROTO_IP;
+ n = IP_MULTICAST_LOOP;
+ break;
}
if (::setsockopt(socketDescriptor, level, n, (char*)&v, sizeof(v)) != 0) {