summaryrefslogtreecommitdiff
path: root/libraries/meanwhile/presence_fix_v2.diff
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/meanwhile/presence_fix_v2.diff')
-rw-r--r--libraries/meanwhile/presence_fix_v2.diff42
1 files changed, 42 insertions, 0 deletions
diff --git a/libraries/meanwhile/presence_fix_v2.diff b/libraries/meanwhile/presence_fix_v2.diff
new file mode 100644
index 0000000000..e01089eda9
--- /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);
+ }
+ }
+