diff -ur gsoap-2.8.17.orig/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.cpp gsoap-2.8.17/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.cpp
--- gsoap-2.8.17.orig/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.cpp 2013-12-18 20:58:36.000000000 +0100
+++ gsoap-2.8.17/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.cpp 2014-08-25 09:52:17.739045215 +0200
@@ -4089,6 +4089,13 @@
if (connect(sk, (struct sockaddr*)&soap->peer, sizeof(soap->peer)))
#endif
{ err = soap_socket_errno(sk);
+#ifdef WITH_IPV6
+ if (err == SOAP_ECONNREFUSED && res->ai_next)
+ { soap->fclosesocket(soap, sk);
+ res = res->ai_next;
+ goto again;
+ }
+#endif
#ifndef WITH_LEAN
if (err == SOAP_EADDRINUSE)
{ soap->fclosesocket(soap, sk);
diff -ur gsoap-2.8.17.orig/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.h gsoap-2.8.17/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.h
--- gsoap-2.8.17.orig/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.h 2013-12-18 20:58:36.000000000 +0100
+++ gsoap-2.8.17/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.h 2014-08-25 09:53:42.186056125 +0200
@@ -972,11 +972,13 @@
# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK
# define SOAP_EINPROGRESS WSAEINPROGRESS
# define SOAP_EADDRINUSE WSAEADDRINUSE
+# define SOAP_ECONNREFUSED WSAECONNREFUSED
#else
# define SOAP_ERANGE ERANGE
# define SOAP_EINTR EINTR
# define SOAP_EAGAIN EAGAIN
# define SOAP_EADDRINUSE EADDRINUSE
+# define SOAP_ECONNREFUSED ECONNREFUSED
# ifdef SYMBIAN
# define SOAP_EWOULDBLOCK 9898
# define SOAP_EINPROGRESS 9899
diff -ur gsoap-2.8.17.orig/gsoap/stdsoap2.c gsoap-2.8.17/gsoap/stdsoap2.c
--- gsoap-2.8.17.orig/gsoap/stdsoap2.c 2013-12-18 20:58:38.000000000 +0100
+++ gsoap-2.8.17/gsoap/stdsoap2.c 2014-08-25 09:52:17.739045215 +0200
@@ -4089,6 +4089,13 @@
if (connect(sk, (struct sockaddr*)&soap->peer, sizeof(soap->peer)))
#endif
{ err = soap_socket_errno(sk);
+#ifdef WITH_IPV6
+ if (err == SOAP_ECONNREFUSED && res->ai_next)
+ { soap->fclosesocket(soap, sk);
+ res = res->ai_next;
+ goto again;
+ }
+#endif
#ifndef WITH_LEAN
if (err == SOAP_EADDRINUSE)
{ soap->fclosesocket(soap, sk);
diff -ur gsoap-2.8.17.orig/gsoap/stdsoap2.cpp gsoap-2.8.17/gsoap/stdsoap2.cpp
--- gsoap-2.8.17.orig/gsoap/stdsoap2.cpp 2013-12-18 20:58:38.000000000 +0100
+++ gsoap-2.8.17/gsoap/stdsoap2.cpp 2014-08-25 09:52:17.739045215 +0200
@@ -4089,6 +4089,13 @@
if (connect(sk, (struct sockaddr*)&soap->peer, sizeof(soap->peer)))
#endif
{ err = soap_socket_errno(sk);
+#ifdef WITH_IPV6
+ if (err == SOAP_ECONNREFUSED && res->ai_next)
+ { soap->fclosesocket(soap, sk);
+ res = res->ai_next;
+ goto again;
+ }
+#endif
#ifndef WITH_LEAN
if (err == SOAP_EADDRINUSE)
{ soap->fclosesocket(soap, sk);
diff -ur gsoap-2.8.17.orig/gsoap/stdsoap2.h gsoap-2.8.17/gsoap/stdsoap2.h
--- gsoap-2.8.17.orig/gsoap/stdsoap2.h 2013-12-18 20:58:38.000000000 +0100
+++ gsoap-2.8.17/gsoap/stdsoap2.h 2014-08-25 09:53:42.186056125 +0200
@@ -972,11 +972,13 @@
# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK
# define SOAP_EINPROGRESS WSAEINPROGRESS
# define SOAP_EADDRINUSE WSAEADDRINUSE
+# define SOAP_ECONNREFUSED WSAECONNREFUSED
#else
# define SOAP_ERANGE ERANGE
# define SOAP_EINTR EINTR
# define SOAP_EAGAIN EAGAIN
# define SOAP_EADDRINUSE EADDRINUSE
+# define SOAP_ECONNREFUSED ECONNREFUSED
# ifdef SYMBIAN
# define SOAP_EWOULDBLOCK 9898
# define SOAP_EINPROGRESS 9899
diff -ur gsoap-2.8.17.orig/gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.cpp gsoap-2.8.17/gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.cpp
--- gsoap-2.8.17.orig/gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.cpp 2013-12-18 20:58:38.000000000 +0100
+++ gsoap-2.8.17/gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.cpp 2014-08-25 09:52:17.739045215 +0200
@@ -4089,6 +4089,13 @@
if (connect(sk, (struct sockaddr*)&soap->peer, sizeof(soap->peer)))
#endif
{ err = soap_socket_errno(sk);
+#ifdef WITH_IPV6
+ if (err == SOAP_ECONNREFUSED && res->ai_next)
+ { soap->fclosesocket(soap, sk);
+ res = res->ai_next;
+ goto again;
+ }
+#endif
#ifndef WITH_LEAN
if (err == SOAP_EADDRINUSE)
{ soap->fclosesocket(soap, sk);
diff -ur gsoap-2.8.17.orig/gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.h gsoap-2.8.17/gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.h
--- gsoap-2.8.17.orig/gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.h 2013-12-18 20:58:38.000000000 +0100
+++ gsoap-2.8.17/gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.h 2014-08-25 09:53:42.186056125 +0200
@@ -972,11 +972,13 @@
# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK
# define SOAP_EINPROGRESS WSAEINPROGRESS
# define SOAP_EADDRINUSE WSAEADDRINUSE
+# define SOAP_ECONNREFUSED WSAECONNREFUSED
#else
# define SOAP_ERANGE ERANGE
# define SOAP_EINTR EINTR
# define SOAP_EAGAIN EAGAIN
# define SOAP_EADDRINUSE EADDRINUSE
+# define SOAP_ECONNREFUSED ECONNREFUSED
# ifdef SYMBIAN
# define SOAP_EWOULDBLOCK 9898
# define SOAP_EINPROGRESS 9899