forked from pool/gsoap
Jan Engelhardt
a0ff782b2f
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/gsoap?expand=0&rev=12
33 lines
1.4 KiB
Diff
33 lines
1.4 KiB
Diff
From: Jan Engelhardt <jengelh@medozas.de>
|
|
Date: 2011-11-10 16:47:10.249693116 +0100
|
|
Upstream: tbd
|
|
|
|
IPPROTO_IPV6 socket options must only be applied to AF_INET6 sockets
|
|
(it fails otherwise).
|
|
|
|
---
|
|
gsoap/stdsoap2.cpp | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
Index: gsoap-2.8.4/gsoap/stdsoap2.cpp
|
|
===================================================================
|
|
--- gsoap-2.8.4.orig/gsoap/stdsoap2.cpp
|
|
+++ gsoap-2.8.4/gsoap/stdsoap2.cpp
|
|
@@ -4685,14 +4685,14 @@ soap_bind(struct soap *soap, const char
|
|
#endif
|
|
#ifdef WITH_IPV6
|
|
#ifdef WITH_IPV6_V6ONLY
|
|
- if (setsockopt(soap->master, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&set, sizeof(int)))
|
|
+ if (res.ai_family == AF_INET6 && setsockopt(soap->master, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&set, sizeof(int)) < 0)
|
|
{ soap->errnum = soap_socket_errno(soap->master);
|
|
soap_set_receiver_error(soap, tcp_error(soap), "setsockopt set IPV6_V6ONLY failed in soap_bind()", SOAP_TCP_ERROR);
|
|
return SOAP_INVALID_SOCKET;
|
|
}
|
|
#endif
|
|
#ifdef WITH_NO_IPV6_V6ONLY
|
|
- if (setsockopt(soap->master, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&unset, sizeof(int)))
|
|
+ if (res.ai_family == AF_INET6 && setsockopt(soap->master, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&unset, sizeof(int)) < 0)
|
|
{ soap->errnum = soap_socket_errno(soap->master);
|
|
soap_set_receiver_error(soap, tcp_error(soap), "setsockopt unset IPV6_V6ONLY failed in soap_bind()", SOAP_TCP_ERROR);
|
|
return SOAP_INVALID_SOCKET;
|