summaryrefslogtreecommitdiffstats
path: root/libraries/meanwhile/presence_fix_v2.diff
blob: e01089eda91c1fdbc9ad1ca6bb03ddf786b6073a (plain)
# 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);
   }
 }