Package: irssi-plugin-xmpp
Followup-For: Bug #1015031
User: [email protected]
Usertags: origin-ubuntu kinetic ubuntu-patch
X-Debbugs-Cc: [email protected]
Control: tags -1 patch
In Ubuntu, the attached patch was applied to achieve the following:
* d/p/gtimeval-build-fix.patch: cherry-picked from a PR upstream to fix
build against newer irssi (Closes: #1015031)
Thanks for considering the patch.
Cheers,
Simon
-- System Information:
Debian Release: bookworm/sid
APT prefers jammy-updates
APT policy: (500, 'jammy-updates'), (500, 'jammy-proposed'), (500, 'jammy'),
(100, 'jammy-backports')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.15.0-43-generic (SMP w/24 CPU threads)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE,
TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru
irssi-plugin-xmpp-0.54+git20191101+c13fa5/debian/patches/gtimeval-build-fix.patch
irssi-plugin-xmpp-0.54+git20191101+c13fa5/debian/patches/gtimeval-build-fix.patch
---
irssi-plugin-xmpp-0.54+git20191101+c13fa5/debian/patches/gtimeval-build-fix.patch
1970-01-01 01:00:00.000000000 +0100
+++
irssi-plugin-xmpp-0.54+git20191101+c13fa5/debian/patches/gtimeval-build-fix.patch
2022-07-29 09:48:28.000000000 +0200
@@ -0,0 +1,123 @@
+From c7728ea5aa2f4e584159b3d12ad815294c44ca6a Mon Sep 17 00:00:00 2001
+From: Ailin Nemui <[email protected]>
+Date: Tue, 17 Mar 2020 14:32:52 +0100
+Subject: [PATCH] add compatibility code to GTimeVal -> gint64 transition
+Origin: https://github.com/cdidier/irssi-xmpp/pull/53
+Reviewed-By: Simon Chopin <[email protected]>
+Last-Update: 2022-07-29
+
+this is for irssi/irssi#1145
+---
+ src/core/xep/ping.c | 50 +++++++++++++++++++++++++++++++++------------
+ 1 file changed, 37 insertions(+), 13 deletions(-)
+
+diff --git a/src/core/xep/ping.c b/src/core/xep/ping.c
+index d51930a..7b811cb 100644
+--- a/src/core/xep/ping.c
++++ b/src/core/xep/ping.c
+@@ -36,15 +36,40 @@
+
+ #define XMLNS_PING "urn:xmpp:ping"
+
++#if defined(IRSSI_ABI_VERSION) && IRSSI_ABI_VERSION >= 25
++#define NO_TIMEVAL
++#define TimeType gint64
++#else
++#define TimeType GTimeVal
++#endif
++
+ struct ping_data {
+- char *id;
+- GTimeVal time;
++ char *id;
++ TimeType time;
+ };
+
+ static int timeout_tag;
+ static GSList *supported_servers;
+ static DATALIST *pings;
+
++#ifdef NO_TIMEVAL
++
++#define set_current_time(var) (var) = g_get_real_time()
++#define clear_time(var) (var) = 0
++#define has_time(var) ((var) != 0)
++#define get_time_sec(var) ((var) / G_TIME_SPAN_SECOND)
++#define get_time_diff(to, from) (to) - (from)
++
++#else
++
++#define set_current_time(var) g_get_current_time(&(var))
++#define clear_time(var) memset(&(var), 0, sizeof((var)))
++#define has_time(var) ((var).tv_sec != 0)
++#define get_time_sec(var) ((var).tv_sec)
++#define get_time_diff(to, from) (int) get_timeval_diff(&(to), &(from))
++
++#endif
++
+ static void
+ request_ping(XMPP_SERVER_REC *server, const char *dest)
+ {
+@@ -63,13 +88,13 @@ request_ping(XMPP_SERVER_REC *server, const char *dest)
+ g_free(server->ping_id);
+ server->ping_id =
+ g_strdup(lm_message_node_get_attribute(lmsg->node, "id"));
+- g_get_current_time(&server->lag_sent);
++ set_current_time(server->lag_sent);
+ server->lag_last_check = time(NULL);
+ } else {
+ pd = g_new0(struct ping_data, 1);
+ pd->id =
+ g_strdup(lm_message_node_get_attribute(lmsg->node, "id"));
+- g_get_current_time(&pd->time);
++ set_current_time(pd->time);
+ datalist_add(pings, server, dest, pd);
+ }
+ signal_emit("xmpp send iq", 2, server, lmsg);
+@@ -98,7 +123,7 @@ sig_recv_iq(XMPP_SERVER_REC *server, LmMessage *lmsg, const
int type,
+ {
+ DATALIST_REC *rec;
+ LmMessageNode *node;
+- GTimeVal now;
++ TimeType now;
+ struct ping_data *pd;
+
+ if (type == LM_MESSAGE_SUB_TYPE_RESULT) {
+@@ -106,19 +131,18 @@ sig_recv_iq(XMPP_SERVER_REC *server, LmMessage *lmsg,
const int type,
+ if (server->ping_id != NULL
+ && (*from == '\0' || strcmp(from, server->domain) == 0)
+ && strcmp(id, server->ping_id) == 0) {
+- g_get_current_time(&now);
+- server->lag =
+- (int)get_timeval_diff(&now, &server->lag_sent);
+- memset(&server->lag_sent, 0, sizeof(server->lag_sent));
++ set_current_time(now);
++ server->lag = get_time_diff(now, server->lag_sent);
++ clear_time(server->lag_sent);
+ g_free_and_null(server->ping_id);
+ signal_emit("server lag", 1, server);
+ } else if (lmsg->node->children == NULL
+ && (rec = datalist_find(pings, server, from)) != NULL) {
+ pd = rec->data;
+ if (strcmp(id, pd->id) == 0) {
+- g_get_current_time(&now);
++ set_current_time(now);
+ signal_emit("xmpp ping", 3, server, from,
+- get_timeval_diff(&now, &pd->time));
++ get_time_diff(now, pd->time));
+ }
+ }
+ } else if (type == LM_MESSAGE_SUB_TYPE_GET) {
+@@ -166,10 +190,10 @@ check_ping_func(void)
+ now = time(NULL);
+ for (tmp = supported_servers; tmp != NULL; tmp = tmp->next) {
+ server = XMPP_SERVER(tmp->data);
+- if (server->lag_sent.tv_sec != 0) {
++ if (has_time(server->lag_sent)) {
+ /* waiting for lag reply */
+ if (max_lag > 1 &&
+- (now - server->lag_sent.tv_sec) > max_lag) {
++ (now - get_time_sec(server->lag_sent)) > max_lag) {
+ /* too much lag - disconnect */
+ signal_emit("server lag disconnect", 1,
+ server);
diff -Nru irssi-plugin-xmpp-0.54+git20191101+c13fa5/debian/patches/series
irssi-plugin-xmpp-0.54+git20191101+c13fa5/debian/patches/series
--- irssi-plugin-xmpp-0.54+git20191101+c13fa5/debian/patches/series
2021-01-22 10:33:44.000000000 +0100
+++ irssi-plugin-xmpp-0.54+git20191101+c13fa5/debian/patches/series
2022-07-29 09:48:28.000000000 +0200
@@ -32,3 +32,4 @@
strip_resource_08082009.patch
singpolyma-fix-warnings.patch
singpolyma-null-resource-was-causing-crash-here.patch
+gtimeval-build-fix.patch