summaryrefslogtreecommitdiffstats
path: root/kresources/groupwise/soap/patches
diff options
context:
space:
mode:
Diffstat (limited to 'kresources/groupwise/soap/patches')
-rw-r--r--kresources/groupwise/soap/patches/README32
-rw-r--r--kresources/groupwise/soap/patches/broken_namespace.diff20
-rw-r--r--kresources/groupwise/soap/patches/socklen.diff28
-rw-r--r--kresources/groupwise/soap/patches/type_typo.diff15
-rw-r--r--kresources/groupwise/soap/patches/utf8_entities.diff15
5 files changed, 110 insertions, 0 deletions
diff --git a/kresources/groupwise/soap/patches/README b/kresources/groupwise/soap/patches/README
new file mode 100644
index 000000000..17e91cb8c
--- /dev/null
+++ b/kresources/groupwise/soap/patches/README
@@ -0,0 +1,32 @@
+gSoap Patches
+=============
+
+This directory contains patches for gSoap required to make the GroupWise
+resource work with the real existing GroupWise server. They are already included
+in the gSoap or gSoap generated files in CVS, so if you don't create the stubs
+yourself or want to upgrade the gSoap version you don't have to care about these
+patches.
+
+Patch descriptions
+------------------
+
+broken_namespace.diff:
+
+ The GroupWise server doesn't correctly declare the default namespace. This
+ patch disables the namespace checking for the GroupWise namespace ns1.
+
+utf8_entities.diff:
+
+ gSoap encodes utf8 characters as XML entities, but the server doesn't seem to
+ be able to decode them. This patch makes gSoap send unencoded utf8 characters.
+
+type_typo.diff
+
+ Some intermediate versions of GroupWise have a typo in the protocol. This
+ patch works around it.
+
+socklen.diff:
+
+ Adriaan de Groot <groot@kde.org>: The attached patch is needed for me to get
+ kresources/groupwise/soap/stdsoap2.cpp to build -- it's the pretty usual
+ socklen_t type mixups (that are only serious on 64-bitters).
diff --git a/kresources/groupwise/soap/patches/broken_namespace.diff b/kresources/groupwise/soap/patches/broken_namespace.diff
new file mode 100644
index 000000000..46c5eee41
--- /dev/null
+++ b/kresources/groupwise/soap/patches/broken_namespace.diff
@@ -0,0 +1,20 @@
+--- /build/progs/gsoap-linux-2.7/stdsoap2.cpp 2004-10-10 20:33:26.000000000 +0200
++++ ../stdsoap2.cpp 2004-10-25 15:44:05.707573480 +0200
+@@ -2249,10 +2249,15 @@
+ SOAP_FMAC1
+ int
+ SOAP_FMAC2
+-soap_match_tag(struct soap *soap, const char *tag1, const char *tag2)
++soap_match_tag(struct soap *soap, const char *tag1, const char *tag2_)
+ { register const char *s, *t;
+- if (!tag1 || !tag2 || !*tag2)
++ if (!tag1 || !tag2_ || !*tag2_)
+ return SOAP_OK;
++
++ const char *tag2;
++ if ( strncmp( tag2_, "ns1:", 4 ) == 0 ) tag2 = tag2_ + 4;
++ else tag2 = tag2_;
++
+ s = strchr(tag1, ':');
+ t = strchr(tag2, ':');
+ if (t)
diff --git a/kresources/groupwise/soap/patches/socklen.diff b/kresources/groupwise/soap/patches/socklen.diff
new file mode 100644
index 000000000..87b283804
--- /dev/null
+++ b/kresources/groupwise/soap/patches/socklen.diff
@@ -0,0 +1,28 @@
+Index: soap/stdsoap2.cpp
+===================================================================
+RCS file: /home/kde/kdepim/kresources/groupwise/soap/stdsoap2.cpp,v
+retrieving revision 1.3
+diff -u -3 -p -r1.3 stdsoap2.cpp
+--- soap/stdsoap2.cpp 3 Dec 2004 17:15:43 -0000 1.3
++++ soap/stdsoap2.cpp 6 Dec 2004 21:27:25 -0000
+@@ -3072,7 +3072,7 @@ tcp_connect(struct soap *soap, const cha
+ #elif defined(WIN32) || defined(__APPLE__) || defined(HP_UX) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS)
+ int n = sizeof(struct sockaddr_in);
+ #else
+- size_t n = sizeof(struct sockaddr_in);
++ kde_socklen_t n = sizeof(struct sockaddr_in);
+ #endif
+ fd_set fds;
+ if (soap->connect_timeout > 0)
+@@ -3503,7 +3503,10 @@ tcp_accept(struct soap *soap, int s, str
+ #elif defined(WIN32) || defined(__APPLE__) || defined(HP_UX) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS)
+ fd = (int)accept((SOAP_SOCKET)s, a, n);
+ #else
+- fd = (int)accept((SOAP_SOCKET)s, a, (size_t*)n);
++ kde_socklen_t n_size = 0;
++ if (n) n_size = *n;
++ fd = (int)accept((SOAP_SOCKET)s, a, &n_size);
++ if (n) *n = n_size;
+ #endif
+ #ifdef SOCKET_CLOSE_ON_EXEC
+ #ifdef WIN32
diff --git a/kresources/groupwise/soap/patches/type_typo.diff b/kresources/groupwise/soap/patches/type_typo.diff
new file mode 100644
index 000000000..c663dad14
--- /dev/null
+++ b/kresources/groupwise/soap/patches/type_typo.diff
@@ -0,0 +1,15 @@
+Index: soap/soapC.cpp
+===================================================================
+RCS file: /home/kde/kdepim/kresources/groupwise/soap/soapC.cpp,v
+retrieving revision 1.4.2.3
+diff -u -3 -p -r1.4.2.3 soapC.cpp
+--- soap/soapC.cpp 25 Oct 2004 13:58:20 -0000 1.4.2.3
++++ soap/soapC.cpp 29 Oct 2004 11:25:22 -0000
+@@ -6337,6 +6337,7 @@ static const struct soap_code_map soap_c
+ { { (long)User, "User" },
+ { (long)PersonalGroup, "PersonalGroup" },
+ { (long)SystemGroup, "SystemGroup" },
++ { (long)SystemGroup, "SsytemGroup" },
+ { (long)PersonalGroupMember, "PersonalGroupMember" },
+ { (long)SystemGroupMember, "SystemGroupMember" },
+ { 0, NULL }
diff --git a/kresources/groupwise/soap/patches/utf8_entities.diff b/kresources/groupwise/soap/patches/utf8_entities.diff
new file mode 100644
index 000000000..b8600a9dd
--- /dev/null
+++ b/kresources/groupwise/soap/patches/utf8_entities.diff
@@ -0,0 +1,15 @@
+--- kresources/groupwise/soap/stdsoap2.cpp
++++ kresources/groupwise/soap/stdsoap2.cpp 2004/10/15 12:42:53
+@@ -6470,7 +6470,11 @@
+ }
+ #endif
+ if (c & mask)
+- { if (soap_send_raw(soap, s, t - s - 1) || soap_pututf8(soap, (unsigned char)c))
++ {
++ char S[2];
++ S[0] = c;
++ S[1] = 0;
++ if (soap_send_raw(soap, s, t - s - 1) || soap_send(soap, S) )
+ return soap->error;
+ s = t;
+ }