aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libraries/meanwhile/meanwhile.SlackBuild3
-rw-r--r--libraries/meanwhile/presence_fix_v2.diff42
2 files changed, 45 insertions, 0 deletions
diff --git a/libraries/meanwhile/meanwhile.SlackBuild b/libraries/meanwhile/meanwhile.SlackBuild
index 95e1e3fad27e..7e3e81bd213b 100644
--- a/libraries/meanwhile/meanwhile.SlackBuild
+++ b/libraries/meanwhile/meanwhile.SlackBuild
@@ -66,6 +66,9 @@ chmod -R u+w,go+r-w,a-s .
# Patch to only include glib.h
patch -p1 < $CWD/fix_glib_includes.patch
+# Patch for online status
+patch -p1 < $CWD/presence_fix_v2.diff
+
CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
diff --git a/libraries/meanwhile/presence_fix_v2.diff b/libraries/meanwhile/presence_fix_v2.diff
new file mode 100644
index 000000000000..e01089eda91c
--- /dev/null
+++ b/libraries/meanwhile/presence_fix_v2.diff
@@ -0,0 +1,42 @@
+# User Mikael Berthe <mikael.berthe@lilotux.net>
+# Date 1194208892 -3600
+Fix Awareness Snapshots with recent Sametime servers
+
+With recent Sametime servers there seem to be 2 bytes
+after the Snapshot Message Blocks.
+This patch tries to use the end of block offset provided
+by the server.
+
+diff -r be8d8f1d3ebc src/common.c
+--- a/src/common.c Sun Nov 04 18:48:00 2007 +0100
++++ b/src/common.c Tue Nov 06 11:46:26 2007 +0100
+@@ -878,23 +878,24 @@ gboolean mwAwareIdBlock_equal(const stru
+ /* 8.4.2.4 Snapshot */
+
+ void mwAwareSnapshot_get(struct mwGetBuffer *b, struct mwAwareSnapshot *idb) {
+- guint32 junk;
+- char *empty = NULL;
++ guint32 end_of_block;
+
+ g_return_if_fail(b != NULL);
+ g_return_if_fail(idb != NULL);
+
+- guint32_get(b, &junk);
++ guint32_get(b, &end_of_block);
+ mwAwareIdBlock_get(b, &idb->id);
+ mwString_get(b, &idb->group);
+ gboolean_get(b, &idb->online);
+-
+- g_free(empty);
+
+ if(idb->online) {
+ mwString_get(b, &idb->alt_id);
+ mwUserStatus_get(b, &idb->status);
+ mwString_get(b, &idb->name);
++ }
++
++ if( b->ptr < b->buf + end_of_block ) {
++ mwGetBuffer_advance(b, b->buf + end_of_block - b->ptr);
+ }
+ }
+