Module: wine
Branch: master
Commit: e7aaeae73ba94e51c09c2198a9e680cdbb0339f2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e7aaeae73ba94e51c09c2198a…
Author: Qian Hong <qhong(a)codeweavers.com>
Date: Wed May 7 15:38:46 2014 +0800
include: Added atlcom.h.
---
include/Makefile.in | 1 +
include/atlcom.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+)
diff --git a/include/Makefile.in b/include/Makefile.in
index cdb7b09..383bef28 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -160,6 +160,7 @@ SRCDIR_INCLUDES = \
asynot.idl \
asysta.idl \
atlbase.h \
+ atlcom.h \
atlwin.h \
audevcod.h \
audiosessiontypes.h \
diff --git a/include/atlcom.h b/include/atlcom.h
new file mode 100644
index 0000000..c141fbe
--- /dev/null
+++ b/include/atlcom.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2014 Qian Hong for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_ATLCOM_H__
+#define __WINE_ATLCOM_H__
+
+#ifndef __WINE_ATLBASE_H__
+# error You must include atlbase.h to use this header
+#endif
+
+typedef struct ATL_PROPMAP_ENTRY
+{
+ LPCOLESTR szDesc;
+#if _ATL_VER < _ATL_VER_100
+ DISPID dispid;
+ const CLSID *pclsidPropPage;
+ const IID *piidDispatch;
+#else
+ const CLSID *pclsidPropPage;
+ const IID *piidDispatch;
+ void *rgclsidAllowed;
+ DWORD cclsidAllowed;
+ DISPID dispid;
+#endif
+ DWORD dwOffsetData;
+ DWORD dwSizeData;
+ VARTYPE vt;
+} ATL_PROPMAP_ENTRY;
+
+HRESULT WINAPI AtlIPersistStreamInit_Load(IStream*, ATL_PROPMAP_ENTRY*, void*, IUnknown*);
+HRESULT WINAPI AtlIPersistStreamInit_Save(IStream*, BOOL, ATL_PROPMAP_ENTRY*, void*, IUnknown*);
+HRESULT WINAPI AtlIPersistPropertyBag_Load(IPropertyBag*, IErrorLog*, ATL_PROPMAP_ENTRY*, void*, IUnknown*);
+HRESULT WINAPI AtlIPersistPropertyBag_Save(IPropertyBag*, BOOL, BOOL, ATL_PROPMAP_ENTRY*, void*, IUnknown*);
+
+#endif /* __WINE_ATLCOM_H__ */
Module: wine
Branch: master
Commit: eda14e611cce9e9c0f72b9a2f84f75885ed3262e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=eda14e611cce9e9c0f72b9a2f…
Author: Bruno Jesus <00cpxxx(a)gmail.com>
Date: Tue May 6 19:36:04 2014 -0300
ws2_32/tests: Test more the behavior of SO_REUSEADDR.
---
dlls/ws2_32/tests/sock.c | 41 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 39 insertions(+), 2 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index dcedd99..1752d35 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -1468,6 +1468,7 @@ static void test_so_reuseaddr(void)
SOCKET s1,s2;
unsigned int rc,reuse;
int size;
+ DWORD err;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(9375);
@@ -1496,9 +1497,45 @@ static void test_so_reuseaddr(void)
/* On Win2k3 and above, all SO_REUSEADDR seems to do is to allow binding to
* a port immediately after closing another socket on that port, so
* basically following the BSD socket semantics here. */
- closesocket(s1);
rc = bind(s2, (struct sockaddr*)&saddr, sizeof(saddr));
- ok(rc==0, "bind() failed error: %d\n", WSAGetLastError());
+ if(rc==0)
+ {
+ int s3=socket(AF_INET, SOCK_STREAM, 0), s4;
+ trace("<= Win XP behavior of SO_REUSEADDR\n");
+
+ /* If we could bind again in the same port this is Windows version <= XP.
+ * Lets test if we can really connect to one of them. */
+ set_blocking(s1, FALSE);
+ set_blocking(s2, FALSE);
+ rc = listen(s1, 1);
+ ok(!rc, "listen() failed with error: %d\n", WSAGetLastError());
+ rc = listen(s2, 1);
+ ok(!rc, "listen() failed with error: %d\n", WSAGetLastError());
+ rc = connect(s3, (struct sockaddr*)&saddr, sizeof(saddr));
+ ok(!rc, "connecting to accepting socket failed %d\n", WSAGetLastError());
+
+ /* the delivery of the connection is random so we need to try on both sockets */
+ size = sizeof(saddr);
+ s4 = accept(s1, (struct sockaddr*)&saddr, &size);
+ if(s4 == INVALID_SOCKET)
+ s4 = accept(s2, (struct sockaddr*)&saddr, &size);
+ ok(s4 != INVALID_SOCKET, "none of the listening sockets could get the connection\n");
+
+ closesocket(s1);
+ closesocket(s3);
+ closesocket(s4);
+ }
+ else
+ {
+ trace(">= Win 2003 behavior of SO_REUSEADDR\n");
+ err = WSAGetLastError();
+todo_wine
+ ok(err==WSAEACCES, "expected 10013, got %d\n", err);
+
+ closesocket(s1);
+ rc = bind(s2, (struct sockaddr*)&saddr, sizeof(saddr));
+ ok(rc==0, "bind() failed error: %d\n", WSAGetLastError());
+ }
closesocket(s2);
}