summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-08-16 12:23:25 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-08-16 12:23:25 -0700
commit3624ecb5457493ac5f965956f36d81f567bb8114 (patch)
treebe51e6d8be31aa25611d762ddce6da9d07a93361
parent79b4ce92d8f979741b3cf1ed9552f047e73c8c9d (diff)
parent6951ca513f697811cfe8d3fa88298a1bd894f5b4 (diff)
Merge tag 'v1.2.2'
-rw-r--r--.github/workflows/ci.yml101
-rw-r--r--.travis.yml47
-rwxr-xr-x.travis/obs.sh17
-rw-r--r--ChangeLog6
-rw-r--r--configure.ac6
-rw-r--r--facebook/facebook-api.c8
-rw-r--r--facebook/facebook-api.h2
-rw-r--r--facebook/facebook-data.c5
-rw-r--r--facebook/facebook-http.c11
-rw-r--r--facebook/facebook-json.c6
-rw-r--r--facebook/facebook-mqtt.c11
-rw-r--r--facebook/facebook-thrift.c6
-rw-r--r--facebook/facebook.c10
13 files changed, 144 insertions, 92 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..097ee98
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,101 @@
+name: CI
+
+on:
+ - pull_request
+ - push
+
+jobs:
+ build:
+ runs-on: ubuntu-16.04
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Dependencies
+ run: |
+ sudo apt-get update -y
+ sudo apt-get install -y --no-install-recommends clang git make pkg-config libgnutls28-dev libgcrypt20-dev libjson-glib-dev #osc
+
+ - uses: actions/cache@v2
+ id: cache
+ with:
+ path: /tmp/bitlbee/
+ key: bitlbee
+
+ - name: clone bitlbee
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: |
+ git clone https://github.com/bitlbee/bitlbee /tmp/bitlbee
+
+ - name: build bitlbee
+ run: |
+ cd /tmp/bitlbee
+ git pull --ff-only
+
+ ./configure \
+ --events=glib \
+ --ssl=gnutls \
+ --doc=0 \
+ --jabber=0 \
+ --msn=0 \
+ --oscar=0 \
+ --twitter=0 \
+ --yahoo=0
+
+ make
+ sudo make install install-dev
+
+ - name: bitlbee-facebook
+ run: |
+ CFLAGS="-Werror" ./autogen.sh --enable-warnings
+ make all clean
+ - name: scan-build
+ run: |
+ scan-build -k --status-bugs make all clean
+
+ obs:
+ if: ${{github.ref == 'refs/head/master' && github.event_name == 'push'}}
+ runs-on: ubuntu-20.04
+ needs: build
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions/cache@v2
+ id: cache
+ with:
+ path: |
+ /tmp/bitlbee/
+ key: bitlbee
+
+ - name: bitlbee headers
+ run: |
+ cd /tmp/bitlbee
+ sudo make install install-dev
+
+ - name: Dependencies
+ run: |
+ echo "deb http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_$(lsb_release -rs) ./" \
+ | sudo tee /etc/apt/sources.list.d/suse.list
+
+ ## this key expired literally three days ago:
+ ##
+ ## pub rsa2048 2018-09-25 [SC] [expired: 2020-12-03]
+ ## FCADAFC81273B9E7F184F2B0826659A9013E5B65
+ ## uid openSUSE:Tools OBS Project <openSUSE:Tools@build.opensuse.org>
+ #
+ #curl -s "http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_$(lsb_release -rs)/Release.key" \
+ # | sudo apt-key add -
+ #
+ ## and for Mysterious Reasons this other key exists with the same fingerprint,
+ ## but expiring three years later:
+ curl -s "https://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_Tumbleweed/repodata/repomd.xml.key" \
+ | sudo apt-key add -
+
+ sudo apt-get update -y
+ sudo apt-get install -y --no-install-recommends osc
+ - name: Send job to OBS
+ env:
+ OBSUSER: ${{ secrets.OBSUSER }}
+ OBSPASS: ${{ secrets.OBSPASS }}
+ run: |
+ .travis/obs.sh
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 0552ba0..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-language: c
-
-notifications:
- email: false
-
-os:
- - linux
-
-compiler:
- - gcc
-
-env:
- global:
- - secure: "TEmTAAN05PO2xTeF/UvmirkFJIUuzYemI6azQRlzhEu/71qMppKcLgnTd6xbQIpOJr96FsDvagC/56XaL0682YjbCATFQft3aD+XtIV8DsGE0edpR8rPTaztwQ7ZYooigRuhe02nWu3g1f8N/3QL9aMUlUCVbvdSPL9c2yB9sFM="
- - secure: "hBqs4rtUTPCOMcrovwqFbWiG7j17T/3jAwtm/5N3c8F7nkiMI/oba6AI7OATYekp+H6oPXD2VpVuFUVklxN9LVzgMybnKx7DNcUyOCCMmBThfRZg+21ActpgYaboynRsyZXCGzqAgGfJRhT8rteLfUNe0uepBe6TBoTEpDO4Gks="
- - secure: "RyCpkq3KU8zftQfD54rNERzzygzLfJtQQXG13LnsIj3NSx5Attr6aM1lZKLWEEgjpkiEuhXkmcwmOuQJfEqYHxYQ24SSKihE9AvEBrOGNuY8CB4SFZEs+atRgovi2SrttdVOU3AzlZSgUUAaHNBUaC7QgimODAyCPV9KfuQkJEw="
- - COVERITY_SCAN_PROJECT_NAME=jgeboski/bitlbee-facebook
- - COVERITY_SCAN_NOTIFICATION_EMAIL=nope
- - COVERITY_SCAN_BUILD_COMMAND=make
- - COVERITY_SCAN_BRANCH_PATTERN=coverity_scan
- - MY_DEPLOY_BRANCH=master
-
-before_install:
- - echo "deb http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_$(lsb_release -rs) ./"
- | sudo tee /etc/apt/sources.list.d/suse.list
- - curl -s "http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_$(lsb_release -rs)/Release.key"
- | sudo apt-key add -
- - sudo apt-get update -qq
- - sudo apt-get install -qq
- --no-install-recommends
- clang
- libjson-glib-dev
- osc
- libgnutls28-dev
- libgcrypt20-dev
-
-install:
- - .travis/bitlbee.sh
-
-script:
- - CFLAGS="-Werror" ./autogen.sh --enable-warnings
- - make all clean
- - scan-build -k --status-bugs make all clean
-
-after_success:
- - curl -s "https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh" | bash || true
- - .travis/obs.sh
diff --git a/.travis/obs.sh b/.travis/obs.sh
index 7292750..fe33b27 100755
--- a/.travis/obs.sh
+++ b/.travis/obs.sh
@@ -1,13 +1,11 @@
#!/bin/bash
-[ "${TRAVIS_PULL_REQUEST}" == "false" -a \
- "${TRAVIS_BRANCH}" == "${MY_DEPLOY_BRANCH}" \
-] || exit
set -e
-FULLVERS="$(date +%Y%m%d)~$(git rev-parse --short=7 HEAD)~${TRAVIS_BUILD_NUMBER}"
+FULLVERS="$(date +%Y%m%d)~$(git rev-parse --short=7 HEAD)~${GITHUB_RUN_NUMBER}"
FULLDATE=$(date -R)
-REPONAME=$(basename "${TRAVIS_REPO_SLUG}")
+REPONAME=$(basename "${GITHUB_REPOSITORY}")
+BUILD_DIR=$(pwd)
git reset -q --hard
git clean -dfqx
@@ -16,6 +14,7 @@ sed -ri \
-e "18 s/^(\s+).*(,)\$/\1\[${FULLVERS}\]\2/" \
-e "s|^PKG_CHECK_MODULES\(\[BITLBEE\].*|plugindir=/usr/lib/bitlbee|" \
configure.ac
+
sed -ri \
-e "s/bitlbee-dev \([^\(\)]+\),?\s*//" \
-e "s/(bitlbee[^ ]*) \(>= 3.4\)/\1 (>= 3.5)/g" \
@@ -29,22 +28,24 @@ ${REPONAME} (${FULLVERS}) UNRELEASED; urgency=medium
-- Travis CI <travis@travis-ci.org> ${FULLDATE}
EOF
-cat <<EOF > ~/.oscrc
+mkdir -p ~/.config/osc/
+cat <<EOF > ~/.config/osc/oscrc
[general]
apiurl = https://api.opensuse.org
[https://api.opensuse.org]
user = ${OBSUSER}
pass = ${OBSPASS}
+credentials_mgr_class=osc.credentials.PlaintextConfigFileCredentialsManager
EOF
mkdir -p m4
cp /usr/local/include/bitlbee/*.h facebook
-osc checkout "home:${OBSUSER}" "${REPONAME}" -o /tmp/obs
+osc checkout "home:jgeboski" "${REPONAME}" -o /tmp/obs
(
cd /tmp/obs
rm -f *.{dsc,tar.gz}
- dpkg-source -I -b "${TRAVIS_BUILD_DIR}"
+ dpkg-source -I -b "${BUILD_DIR}"
osc addremove -r
osc commit -m "Updated to ${FULLVERS}"
diff --git a/ChangeLog b/ChangeLog
index 99c89a8..916f8bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+bitlbee-facebook-1.2.2 (2021-02-13):
+ - Fix id assertion in fb_api_cb_publish_mst()
+ - Increase sync_interval from 5 to 1440 ("The action attempted has been
+ deemed abusive or is otherwise disallowed")
+ - Bump the FB_ORCA_AGENT version once again
+
bitlbee-facebook-1.2.1 (2020-10-20):
- Fix "Parse error: unexpected identifier 'taNewMessage'"
- Fix "Failed to read thrift: facebook-api.c:1929 fb_api_cb_publish_pt:
diff --git a/configure.ac b/configure.ac
index 697492c..aae1d0a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,7 +15,7 @@
AC_INIT(
[bitlbee-facebook],
- [1.2.1],
+ [1.2.2],
[https://github.com/bitlbee/bitlbee-facebook/issues],
[bitlbee-facebook],
[https://github.com/bitlbee/bitlbee-facebook],
@@ -32,7 +32,7 @@ AM_PROG_CC_C_O
LT_INIT([disable-static])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-m4_ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99])
+m4_ifdef([AC_PROG_CC], [AC_PROG_CC])
# Define PKG_CHECK_VAR() for pkg-config < 0.28
m4_define_default(
@@ -53,7 +53,7 @@ AC_ARG_ENABLE(
)
AS_IF(
- [test "x$WARNINGS" == "xyes"],
+ [test "x$WARNINGS" = "xyes"],
[CFLAGS="$CFLAGS -Wall -Wextra \
-Waggregate-return \
-Wdeclaration-after-statement \
diff --git a/facebook/facebook-api.c b/facebook/facebook-api.c
index 7b21caf..b452ccd 100644
--- a/facebook/facebook-api.c
+++ b/facebook/facebook-api.c
@@ -100,7 +100,7 @@ fb_api_sticker(FbApi *api, FbId sid, FbApiMessage *msg);
void
fb_api_contacts_delta(FbApi *api, const gchar *delta_cursor);
-G_DEFINE_TYPE(FbApi, fb_api, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE(FbApi, fb_api, G_TYPE_OBJECT);
static const gchar *agents[] = {
FB_API_AGENT,
@@ -240,7 +240,6 @@ fb_api_class_init(FbApiClass *klass)
gklass->set_property = fb_api_set_property;
gklass->get_property = fb_api_get_property;
gklass->dispose = fb_api_dispose;
- g_type_class_add_private(klass, sizeof (FbApiPrivate));
/**
* FbApi:cid:
@@ -599,7 +598,7 @@ fb_api_init(FbApi *api)
{
FbApiPrivate *priv;
- priv = G_TYPE_INSTANCE_GET_PRIVATE(api, FB_TYPE_API, FbApiPrivate);
+ priv = fb_api_get_instance_private(api);
api->priv = priv;
priv->http = fb_http_new(FB_API_AGENT);
@@ -1544,7 +1543,8 @@ fb_api_cb_publish_mst(FbThrift *thft, GError **error)
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_util_debug_info("fb_api_cb_publish_mst() id: %d", id);
+ FB_API_TCHK(id == 1 || id == 2);
FB_API_TCHK(fb_thrift_read_str(thft, NULL));
FB_API_TCHK(fb_thrift_read_stop(thft));
}
diff --git a/facebook/facebook-api.h b/facebook/facebook-api.h
index 988dbf5..cecfa05 100644
--- a/facebook/facebook-api.h
+++ b/facebook/facebook-api.h
@@ -117,7 +117,7 @@
*
*/
-#define FB_ORCA_AGENT "[FBAN/Orca-Android;FBAV/192.0.0.31.101;FBBV/14477681]"
+#define FB_ORCA_AGENT "[FBAN/Orca-Android;FBAV/537.0.0.31.101;FBBV/14477681]"
/**
* FB_API_AGENT:
diff --git a/facebook/facebook-data.c b/facebook/facebook-data.c
index 608d725..84dc270 100644
--- a/facebook/facebook-data.c
+++ b/facebook/facebook-data.c
@@ -37,7 +37,7 @@ static const gchar *fb_props_strs[] = {
"token"
};
-G_DEFINE_TYPE(FbData, fb_data, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE(FbData, fb_data, G_TYPE_OBJECT);
static void
fb_data_dispose(GObject *obj)
@@ -74,7 +74,6 @@ fb_data_class_init(FbDataClass *klass)
GObjectClass *gklass = G_OBJECT_CLASS(klass);
gklass->dispose = fb_data_dispose;
- g_type_class_add_private(klass, sizeof (FbDataPrivate));
}
static void
@@ -82,7 +81,7 @@ fb_data_init(FbData *fata)
{
FbDataPrivate *priv;
- priv = G_TYPE_INSTANCE_GET_PRIVATE(fata, FB_TYPE_DATA, FbDataPrivate);
+ priv = fb_data_get_instance_private(fata);
fata->priv = priv;
priv->api = fb_api_new();
diff --git a/facebook/facebook-http.c b/facebook/facebook-http.c
index 7335848..d7f2b01 100644
--- a/facebook/facebook-http.c
+++ b/facebook/facebook-http.c
@@ -47,8 +47,8 @@ struct _FbHttpRequestPrivate
gboolean freed;
};
-G_DEFINE_TYPE(FbHttp, fb_http, G_TYPE_OBJECT);
-G_DEFINE_TYPE(FbHttpRequest, fb_http_request, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE(FbHttp, fb_http, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE(FbHttpRequest, fb_http_request, G_TYPE_OBJECT);
static void
fb_http_dispose(GObject *obj)
@@ -68,7 +68,6 @@ fb_http_class_init(FbHttpClass *klass)
GObjectClass *gklass = G_OBJECT_CLASS(klass);
gklass->dispose = fb_http_dispose;
- g_type_class_add_private(klass, sizeof (FbHttpPrivate));
}
static void
@@ -76,7 +75,7 @@ fb_http_init(FbHttp *http)
{
FbHttpPrivate *priv;
- priv = G_TYPE_INSTANCE_GET_PRIVATE(http, FB_TYPE_HTTP, FbHttpPrivate);
+ priv = fb_http_get_instance_private(http);
http->priv = priv;
priv->cookies = fb_http_values_new();
@@ -116,7 +115,6 @@ fb_http_request_class_init(FbHttpRequestClass *klass)
GObjectClass *gklass = G_OBJECT_CLASS(klass);
gklass->dispose = fb_http_request_dispose;
- g_type_class_add_private(klass, sizeof (FbHttpRequestPrivate));
}
static void
@@ -124,8 +122,7 @@ fb_http_request_init(FbHttpRequest *req)
{
FbHttpRequestPrivate *priv;
- priv = G_TYPE_INSTANCE_GET_PRIVATE(req, FB_TYPE_HTTP_REQUEST,
- FbHttpRequestPrivate);
+ priv = fb_http_request_get_instance_private(req);
req->priv = priv;
priv->headers = fb_http_values_new();
diff --git a/facebook/facebook-json.c b/facebook/facebook-json.c
index 976e4c3..a9a2a4d 100644
--- a/facebook/facebook-json.c
+++ b/facebook/facebook-json.c
@@ -44,7 +44,7 @@ struct _FbJsonValuesPrivate
GError *error;
};
-G_DEFINE_TYPE(FbJsonValues, fb_json_values, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE(FbJsonValues, fb_json_values, G_TYPE_OBJECT);
static void
fb_json_values_dispose(GObject *obj)
@@ -79,7 +79,6 @@ fb_json_values_class_init(FbJsonValuesClass *klass)
GObjectClass *gklass = G_OBJECT_CLASS(klass);
gklass->dispose = fb_json_values_dispose;
- g_type_class_add_private(klass, sizeof (FbJsonValuesPrivate));
}
static void
@@ -87,8 +86,7 @@ fb_json_values_init(FbJsonValues *values)
{
FbJsonValuesPrivate *priv;
- priv = G_TYPE_INSTANCE_GET_PRIVATE(values, FB_TYPE_JSON_VALUES,
- FbJsonValuesPrivate);
+ priv = fb_json_values_get_instance_private(values);
values->priv = priv;
priv->queue = g_queue_new();
diff --git a/facebook/facebook-mqtt.c b/facebook/facebook-mqtt.c
index 01979e6..e6a2c18 100644
--- a/facebook/facebook-mqtt.c
+++ b/facebook/facebook-mqtt.c
@@ -51,8 +51,8 @@ struct _FbMqttMessagePrivate
gboolean local;
};
-G_DEFINE_TYPE(FbMqtt, fb_mqtt, G_TYPE_OBJECT);
-G_DEFINE_TYPE(FbMqttMessage, fb_mqtt_message, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE(FbMqtt, fb_mqtt, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE(FbMqttMessage, fb_mqtt_message, G_TYPE_OBJECT);
static void
fb_mqtt_dispose(GObject *obj)
@@ -71,7 +71,6 @@ fb_mqtt_class_init(FbMqttClass *klass)
GObjectClass *gklass = G_OBJECT_CLASS(klass);
gklass->dispose = fb_mqtt_dispose;
- g_type_class_add_private(klass, sizeof (FbMqttPrivate));
/**
* FbMqtt::connect:
@@ -146,7 +145,7 @@ fb_mqtt_init(FbMqtt *mqtt)
{
FbMqttPrivate *priv;
- priv = G_TYPE_INSTANCE_GET_PRIVATE(mqtt, FB_TYPE_MQTT, FbMqttPrivate);
+ priv = fb_mqtt_get_instance_private(mqtt);
mqtt->priv = priv;
priv->rbuf = g_byte_array_new();
@@ -169,7 +168,6 @@ fb_mqtt_message_class_init(FbMqttMessageClass *klass)
GObjectClass *gklass = G_OBJECT_CLASS(klass);
gklass->dispose = fb_mqtt_message_dispose;
- g_type_class_add_private(klass, sizeof (FbMqttMessagePrivate));
}
static void
@@ -177,8 +175,7 @@ fb_mqtt_message_init(FbMqttMessage *msg)
{
FbMqttMessagePrivate *priv;
- priv = G_TYPE_INSTANCE_GET_PRIVATE(msg, FB_TYPE_MQTT_MESSAGE,
- FbMqttMessagePrivate);
+ priv = fb_mqtt_message_get_instance_private(msg);
msg->priv = priv;
}
diff --git a/facebook/facebook-thrift.c b/facebook/facebook-thrift.c
index 164dc21..6ef7fdd 100644
--- a/facebook/facebook-thrift.c
+++ b/facebook/facebook-thrift.c
@@ -28,7 +28,7 @@ struct _FbThriftPrivate
guint lastbool;
};
-G_DEFINE_TYPE(FbThrift, fb_thrift, G_TYPE_OBJECT);
+G_DEFINE_TYPE_WITH_PRIVATE(FbThrift, fb_thrift, G_TYPE_OBJECT);
static void
fb_thrift_dispose(GObject *obj)
@@ -46,7 +46,6 @@ fb_thrift_class_init(FbThriftClass *klass)
GObjectClass *gklass = G_OBJECT_CLASS(klass);
gklass->dispose = fb_thrift_dispose;
- g_type_class_add_private(klass, sizeof (FbThriftPrivate));
}
static void
@@ -54,8 +53,7 @@ fb_thrift_init(FbThrift *thft)
{
FbThriftPrivate *priv;
- priv = G_TYPE_INSTANCE_GET_PRIVATE(thft, FB_TYPE_THRIFT,
- FbThriftPrivate);
+ priv = fb_thrift_get_instance_private(thft);
thft->priv = priv;
}
diff --git a/facebook/facebook.c b/facebook/facebook.c
index 0ced73f..9e6d9e3 100644
--- a/facebook/facebook.c
+++ b/facebook/facebook.c
@@ -212,9 +212,11 @@ fb_sync_contacts_add_timeout(FbData *fata)
sync = set_getint(&acct->set, "sync_interval");
- if (sync < 1) {
- set_setint(&acct->set, "sync_interval", 1);
- sync = 1;
+ /* if it's 5 minutes or lower, set it to the new default,
+ * since servers really don't like us syncing that often */
+ if (sync <= 5) {
+ sync = 1440;
+ set_setint(&acct->set, "sync_interval", sync);
}
sync *= 60 * 1000;
@@ -772,7 +774,7 @@ fb_init(account_t *acct)
set_add(&acct->set, "mark_read", "false", fb_eval_mark_read, acct);
set_add(&acct->set, "mark_read_reply", "false", set_eval_bool, acct);
set_add(&acct->set, "show_unread", "false", set_eval_bool, acct);
- set_add(&acct->set, "sync_interval", "5", set_eval_int, acct);
+ set_add(&acct->set, "sync_interval", "1440", set_eval_int, acct);
set_add(&acct->set, "work", "false", set_eval_bool, acct);
}