提交 5fc745a3 编写于 作者: G Gonzalo Paniagua Javier 提交者: Ricardo Arango

Map SO_EXCLUSIVEADDRUSE to !SO_REUSEADDR

	This will make windows app that use that property work on *nix.
	Fixes bug #643475.
上级 44a212eb
......@@ -1782,8 +1782,18 @@ void ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal(SOCKET soc
*error = 0;
ret=convert_sockopt_level_and_name(level, name, &system_level,
&system_name);
#if !defined(SO_EXCLUSIVEADDRUSE) && defined(SO_REUSEADDR)
if (level == SocketOptionLevel_Socket && name == SocketOptionName_ExclusiveAddressUse) {
system_level = SOL_SOCKET;
system_name = SO_REUSEADDR;
ret = 0;
} else
#endif
{
ret = convert_sockopt_level_and_name (level, name, &system_level, &system_name);
}
if(ret==-1) {
*error = WSAENOPROTOOPT;
return;
......@@ -1890,9 +1900,12 @@ void ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal(SOCKET soc
#endif
default:
#if !defined(SO_EXCLUSIVEADDRUSE) && defined(SO_REUSEADDR)
if (level == SocketOptionLevel_Socket && name == SocketOptionName_ExclusiveAddressUse)
val = val ? 0 : 1;
#endif
obj = int_to_object (domain, val);
}
*obj_val=obj;
}
......@@ -2007,6 +2020,15 @@ void ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal(SOCKET sock, g
ret=convert_sockopt_level_and_name(level, name, &system_level,
&system_name);
#if !defined(SO_EXCLUSIVEADDRUSE) && defined(SO_REUSEADDR)
if (level == SocketOptionLevel_Socket && name == SocketOptionName_ExclusiveAddressUse) {
system_name = SO_REUSEADDR;
int_val = int_val ? 0 : 1;
ret = 0;
}
#endif
if(ret==-1) {
*error = WSAENOPROTOOPT;
return;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册