summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sal/osl/w32/socket.cxx22
-rw-r--r--sal/osl/w32/system.h1
-rw-r--r--sd/source/ui/remotecontrol/DiscoveryService.cxx11
3 files changed, 34 insertions, 0 deletions
diff --git a/sal/osl/w32/socket.cxx b/sal/osl/w32/socket.cxx
index 86f455e410c1..a6487fa0dae0 100644
--- a/sal/osl/w32/socket.cxx
+++ b/sal/osl/w32/socket.cxx
@@ -584,6 +584,15 @@ oslSocketAddr SAL_CALL osl_createInetBroadcastAddr (
if (strDottedAddr && strDottedAddr->length)
{
+// the Win32 SDK 8.1 deprecates inet_addr()
+#ifdef _WIN32_WINNT_WINBLUE
+ IN_ADDR addr;
+ INT ret = InetPtonW(AF_INET, strDottedAddr->buffer, & addr);
+ if (1 == ret)
+ {
+ nAddr = addr.S_un.S_addr;
+ }
+#else
/* Dotted host address for limited broadcast */
rtl_String *pDottedAddr = NULL;
@@ -592,7 +601,9 @@ oslSocketAddr SAL_CALL osl_createInetBroadcastAddr (
RTL_TEXTENCODING_UTF8, OUSTRING_TO_OSTRING_CVTFLAGS);
nAddr = inet_addr (pDottedAddr->buffer);
+
rtl_string_release (pDottedAddr);
+#endif
}
if (nAddr != OSL_INADDR_NONE)
@@ -635,6 +646,16 @@ oslSocketAddr SAL_CALL osl_createInetSocketAddr (
sal_Int32 Port)
{
sal_uInt32 Addr;
+
+// the Win32 SDK 8.1 deprecates inet_addr()
+#ifdef _WIN32_WINNT_WINBLUE
+ IN_ADDR addr;
+ INT ret = InetPtonW(AF_INET, strDottedAddr->buffer, & addr);
+ if (1 == ret)
+ {
+ Addr = addr.S_un.S_addr;
+ }
+#else
rtl_String *pDottedAddr=NULL;
rtl_uString2String(
@@ -643,6 +664,7 @@ oslSocketAddr SAL_CALL osl_createInetSocketAddr (
Addr= inet_addr (pDottedAddr->buffer);
rtl_string_release (pDottedAddr);
+#endif
oslSocketAddr pAddr = 0;
if(Addr != OSL_INADDR_NONE)
diff --git a/sal/osl/w32/system.h b/sal/osl/w32/system.h
index 57a7a0fb6aa4..e461ad9c5561 100644
--- a/sal/osl/w32/system.h
+++ b/sal/osl/w32/system.h
@@ -68,6 +68,7 @@
#pragma warning(disable:4917)
#include <winsock2.h>
#include <wsipx.h>
+ #include <ws2tcpip.h>
#include <shlobj.h>
#ifndef NO_DEBUG_CRT
#include <crtdbg.h>
diff --git a/sd/source/ui/remotecontrol/DiscoveryService.cxx b/sd/source/ui/remotecontrol/DiscoveryService.cxx
index 04ef5e7282b7..5cd9907ca4e3 100644
--- a/sd/source/ui/remotecontrol/DiscoveryService.cxx
+++ b/sd/source/ui/remotecontrol/DiscoveryService.cxx
@@ -122,7 +122,18 @@ void DiscoveryService::setupSockets()
struct ip_mreq multicastRequest;
+// the Win32 SDK 8.1 deprecates inet_addr()
+#ifdef _WIN32_WINNT_WINBLUE
+ IN_ADDR addr;
+ OUString const saddr("239.0.0.1");
+ INT ret = InetPtonW(AF_INET, saddr.getStr(), & addr);
+ if (1 == ret)
+ {
+ multicastRequest.imr_multiaddr.s_addr = addr.S_un.S_addr;
+ }
+#else
multicastRequest.imr_multiaddr.s_addr = inet_addr( "239.0.0.1" );
+#endif
multicastRequest.imr_interface.s_addr = htonl(INADDR_ANY);
rc = setsockopt( mSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP,