Date: Wednesday, May 5, 2021 @ 17:20:48
  Author: bgyorgy
Revision: 927808

upgpkg: purple-facebook 0.9.6-4: Apply more upstream fixes

Added:
  purple-facebook/trunk/fix-taNewMessage-bug.patch
Modified:
  purple-facebook/trunk/PKGBUILD

----------------------------+
 PKGBUILD                   |   17 ++++++-----
 fix-taNewMessage-bug.patch |   64 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+), 7 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2021-05-05 17:20:11 UTC (rev 927807)
+++ PKGBUILD    2021-05-05 17:20:48 UTC (rev 927808)
@@ -2,20 +2,23 @@
 
 pkgname=purple-facebook
 pkgver=0.9.6
-pkgrel=3
+pkgrel=4
 pkgdesc='Facebook protocol plugin for libpurple'
 arch=('x86_64')
 url='https://github.com/dequis/purple-facebook'
 license=('GPL')
 depends=('json-glib' 'libpurple')
-source=("https://github.com/dequis/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz";)
-sha256sums=('1db6ed9e8f81cbd4ae10d75c04f5393e5cd4ca11ced74408ca6d07c7b888f3f7')
+source=("https://github.com/dequis/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz";
+        'fix-taNewMessage-bug.patch')
+sha256sums=('1db6ed9e8f81cbd4ae10d75c04f5393e5cd4ca11ced74408ca6d07c7b888f3f7'
+            '404ebdf6d47991a00ddf24acc433db024e9c5e7cece52ba36e20ea620b09fb07')
 
 prepare() {
-  cd $pkgname-$pkgver
-  # Bump the FB_ORCA_AGENT version
-  # 
https://github.com/dequis/purple-facebook/commit/3f4e9500bed9c1a7f9bb6c5381823a4facde6602
-  sed -i 's/192.0.0.31.101/537.0.0.31.101/' 
pidgin/libpurple/protocols/facebook/api.h
+  cd $pkgname-$pkgver/pidgin
+  # Upstream fixes
+  patch -Np1 -i ../../fix-taNewMessage-bug.patch
+  sed -i 's/192.0.0.31.101/537.0.0.31.101/
+          /FB_API_TCHK(id == 2);/d' libpurple/protocols/facebook/api.h
 }
 
 build() {

Added: fix-taNewMessage-bug.patch
===================================================================
--- fix-taNewMessage-bug.patch                          (rev 0)
+++ fix-taNewMessage-bug.patch  2021-05-05 17:20:48 UTC (rev 927808)
@@ -0,0 +1,64 @@
+--- a/libpurple/protocols/facebook/api.c
++++ b/libpurple/protocols/facebook/api.c
+@@ -1502,6 +1502,23 @@
+ fb_api_cb_publish_ms_event(FbApi *api, JsonNode *root, GSList *events, 
FbApiEventType type, GError **error);
+ 
+ static void
++fb_api_cb_publish_mst(FbThrift *thft, GError **error)
++{
++      if (fb_thrift_read_isstop(thft)) {
++              FB_API_TCHK(fb_thrift_read_stop(thft));
++      } else {
++              FbThriftType type;
++              gint16 id;
++
++              FB_API_TCHK(fb_thrift_read_field(thft, &type, &id, 0));
++              FB_API_TCHK(type == FB_THRIFT_TYPE_STRING);
++              FB_API_TCHK(id == 2);
++              FB_API_TCHK(fb_thrift_read_str(thft, NULL));
++              FB_API_TCHK(fb_thrift_read_stop(thft));
++      }
++}
++
++static void
+ fb_api_cb_publish_ms(FbApi *api, GByteArray *pload)
+ {
+       const gchar *data;
+@@ -1531,10 +1548,14 @@
+ 
+       /* Read identifier string (for Facebook employees) */
+       thft = fb_thrift_new(pload, 0);
+-      fb_thrift_read_str(thft, NULL);
++      fb_api_cb_publish_mst(thft, &err);
+       size = fb_thrift_get_pos(thft);
+       g_object_unref(thft);
+ 
++      FB_API_ERROR_EMIT(api, err,
++              return;
++      );
++
+       g_return_if_fail(size < pload->len);
+       data = (gchar *) pload->data + size;
+       size = pload->len - size;
+@@ -1844,8 +1865,8 @@
+               pres->active = i32 != 0;
+               *press = g_slist_prepend(*press, pres);
+ 
+-              fb_util_debug_info("Presence: %" FB_ID_FORMAT " (%d)",
+-                                 i64, i32 != 0);
++              fb_util_debug_info("Presence: %" FB_ID_FORMAT " (%d) id: %d",
++                                 i64, i32 != 0, id);
+ 
+               while (id <= 6) {
+                       if (fb_thrift_read_isstop(thft)) {
+@@ -1894,7 +1915,9 @@
+       }
+ 
+       /* Read the field stop */
+-      FB_API_TCHK(fb_thrift_read_stop(thft));
++      if (fb_thrift_read_isstop(thft)) {
++              FB_API_TCHK(fb_thrift_read_stop(thft));
++      }
+ }
+ 
+ static void

Reply via email to