Fixed ticket #644 and 648 again (hopefully once and for all): build error on VS6 with built-in SDK and on PocketPC 2003 SDK since they don't have multicast related socket options

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2331 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjlib/include/pj/compat/os_auto.h.in b/pjlib/include/pj/compat/os_auto.h.in
index d9b37d2..8c65c8f 100644
--- a/pjlib/include/pj/compat/os_auto.h.in
+++ b/pjlib/include/pj/compat/os_auto.h.in
@@ -75,6 +75,7 @@
 #undef PJ_HAS_MSWSOCK_H
 #undef PJ_HAS_WINSOCK_H
 #undef PJ_HAS_WINSOCK2_H
+#undef PJ_HAS_WS2TCPIP_H
 
 #undef PJ_SOCK_HAS_INET_ATON
 #undef PJ_SOCK_HAS_INET_PTON
diff --git a/pjlib/include/pj/compat/os_win32.h b/pjlib/include/pj/compat/os_win32.h
index 52ac49b..2d98804 100644
--- a/pjlib/include/pj/compat/os_win32.h
+++ b/pjlib/include/pj/compat/os_win32.h
@@ -59,6 +59,7 @@
 #define PJ_HAS_MSWSOCK_H	    1
 #define PJ_HAS_WINSOCK_H	    0
 #define PJ_HAS_WINSOCK2_H	    1
+#define PJ_HAS_WS2TCPIP_H	    1
 
 #define PJ_SOCK_HAS_INET_ATON	    0
 
diff --git a/pjlib/include/pj/compat/socket.h b/pjlib/include/pj/compat/socket.h
index f173e8f..e132e64 100644
--- a/pjlib/include/pj/compat/socket.h
+++ b/pjlib/include/pj/compat/socket.h
@@ -32,6 +32,11 @@
 #  include <winsock.h>
 #endif
 
+#if defined(PJ_HAS_WS2TCPIP_H) && PJ_HAS_WS2TCPIP_H != 0
+#   include <ws2tcpip.h>
+#endif
+
+
 /*
  * IPv6 for Visual Studio's
  *
@@ -58,9 +63,6 @@
 #	define s_addr  S_un.S_addr
 #   endif
 
-#   include <ws2tcpip.h>
-#   define PJ_WS2TCPIP_H_INCLUDED
-
 #   if !defined(IPPROTO_IPV6)
 	/* Need to download and install IPv6Kit for this platform.
 	 * Please see the comments above about Visual Studio 6.
@@ -71,11 +73,6 @@
 #   define PJ_SOCK_HAS_GETADDRINFO  1
 #endif	/* _MSC_VER */
 
-/* Mingw32 needs ws2tcpip.h for the IGMP constants */
-#if defined(__GNUC__) && defined(WIN32) && !defined(PJ_WS2TCPIP_H_INCLUDED)
-#   include <ws2tcpip.h>
-#endif
-
 #if defined(PJ_HAS_SYS_TYPES_H) && PJ_HAS_SYS_TYPES_H != 0
 #  include <sys/types.h>
 #endif
diff --git a/pjlib/src/pj/sock_bsd.c b/pjlib/src/pj/sock_bsd.c
index 7414254..9adacfa 100644
--- a/pjlib/src/pj/sock_bsd.c
+++ b/pjlib/src/pj/sock_bsd.c
@@ -115,12 +115,20 @@
 const pj_uint16_t PJ_SO_TYPE    = SO_TYPE;
 const pj_uint16_t PJ_SO_RCVBUF  = SO_RCVBUF;
 const pj_uint16_t PJ_SO_SNDBUF  = SO_SNDBUF;
+/* Multicasting is not supported e.g. in PocketPC 2003 SDK */
+#ifdef IP_MULTICAST_IF
 const pj_uint16_t PJ_IP_MULTICAST_IF    = IP_MULTICAST_IF;
 const pj_uint16_t PJ_IP_MULTICAST_TTL   = IP_MULTICAST_TTL;
 const pj_uint16_t PJ_IP_MULTICAST_LOOP  = IP_MULTICAST_LOOP;
 const pj_uint16_t PJ_IP_ADD_MEMBERSHIP  = IP_ADD_MEMBERSHIP;
 const pj_uint16_t PJ_IP_DROP_MEMBERSHIP = IP_DROP_MEMBERSHIP;
-
+#else
+const pj_uint16_t PJ_IP_MULTICAST_IF    = 0xFFFF;
+const pj_uint16_t PJ_IP_MULTICAST_TTL   = 0xFFFF;
+const pj_uint16_t PJ_IP_MULTICAST_LOOP  = 0xFFFF;
+const pj_uint16_t PJ_IP_ADD_MEMBERSHIP  = 0xFFFF;
+const pj_uint16_t PJ_IP_DROP_MEMBERSHIP = 0xFFFF;
+#endif
 
 /* recv() and send() flags */
 const int PJ_MSG_OOB		= MSG_OOB;