telepathyim / telepathy-gabble Goto Github PK
View Code? Open in Web Editor NEWXMPP connection manager based on telepathy-glib
Home Page: https://telepathy.freedesktop.org
License: Other
XMPP connection manager based on telepathy-glib
Home Page: https://telepathy.freedesktop.org
License: Other
I was trying to create test unit for markers and stumbled upon several inconsistencies
@noonien-d I might be missing something - do you remember what driven you to these decisions, was it just a quick'n'dirty patch in (proof of concept implementation) or there were some other drivers doing it this way? I.e. I think the driver was to use carbon extraction and perhaps just misses a condition case to suppress create_if_missing
?
Please add support of XEP-0443: XMPP Compliance Suites 2021: https://xmpp.org/extensions/xep-0443.html
Which replaces:
Silent flag (hint) in headers part of the message suppresses incoming message notifications hence needs to be set for any non-incoming message (such us outgoing carbon and mam).
https://telepathy.freedesktop.org/spec/Channel_Interface_Messages.html#Simple-Type:Message_Header_Key
silent (b)
If present and true, the incoming message should not trigger a user notification.
https://telepathy.freedesktop.org/doc/telepathy-glib-0.24.x/TpMessage.html#tp-message-set-boolean
void tp_message_set_boolean (TpMessage *self,
guint part,
const gchar *key,
gboolean b);
Headers are in part 0.
Just internal tracker for XEP-0234 implementation which I'm currently trying to achieve.
Effectively once JingleFT is stabilized we may need to clean it up removing at least gtalk part is this is clearly obsolete by now. SI should be kept for backward compatibility.
latest MR introduced regression with GHashTable being destroyed with g_object_unref instead of g_hash_table_unref
trivial fix - just a reminder
While struggling with trying to figure out how to send a a{sa(ss)} result over dbus with gabble (instead of a{sa{ss}} which worked) I tried to use a GValueArray for the a(ss) portion. However apparently g_value_array_new () is deprecated, and current code is supposed to use g_array_new ().
Does gabble need to be updated to GArray? GValueArray is used in a few places.
(Also FWIW, the a{sa(ss)} was my attempt to return the list of commands from xep 50 as {"jid to send commands to": [("node", "name"),]}
But so far all my attempts to create that data structure using gvalues are failing.
Also the freedesktop bug tracker isn't letting me log in right now.
I just bought Sailfish OS for a Sony Xperia X. It is using Telepathy as communication framework and I really like how integrated it is. Unfortunately telepathy-gabble does not support message carbons, so my chat is out of sync with the other devices.
Support for SM should primarily be done in wocky (see TelepathyIM/wocky#14) however first - gabble need to understand resuming state to adjust timers/signal gui and second - the non-fatal resumption failure requires special handling (as TpBaseConnection is not reusable).
This issue will track the adoption of TelepathyIM/wocky#16 by gabble.
On the XEPs support page, it is possible to have a XEPs and RFCs support page with version (XEP-XXXX v1.2)?
It includes too:
Examples:
Carbons is good and well needed but there's tendency to shift towards MAM using it as subscription to pick up communication. Also it makes more sense to have it for mobile devices (sleep, wake, sync).
Any volunteers or perhaps even ready implementations? I have it on to-do list but not sure how fast i can approach it.
"When using the SASL SCRAM mechanism, the SCRAM-SHA-256-PLUS variant SHOULD be preferred over the SCRAM-SHA-256 variant, and SHA-256 variants [RFC7677] SHOULD be preferred over SHA-1 variants [RFC5802]".
Can you add support for?
SCRAM-SHA-1(-PLUS):
-- https://tools.ietf.org/html/rfc5802
-- https://tools.ietf.org/html/rfc6120
SCRAM-SHA-256(-PLUS):
-- https://tools.ietf.org/html/rfc7677 since 2015-11-02
-- https://tools.ietf.org/html/rfc8600 since 2019-06-21: https://mailarchive.ietf.org/arch/msg/ietf-announce/suJMmeMhuAOmGn_PJYgX5Vm8lNA
I add SCRAM-SHA-512(-PLUS): https://xmpp.org/extensions/inbox/hash-recommendations.html
Linked to:
telepathy-gabble: libsoup2 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported.
When telepathy-gabble is used alongside another account manager plugin (such as telepathy-haze) that uses libsoup-3. telepathy-gabble crashes, crashing the entire telepathy stack.
There is no work-around, and due-to wocky using removed soupmessage
functions, just swapping library versions at build-time is not a option.
/bin/sh ../libtool --tag=CC --mode=compile x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wsign-compare -Wnested-externs -Wpointer-ari
th -Wformat-security -Winit-self -Wno-missing-field-initializers -Wno-unused-parameter -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libxml2 -pthread -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/u
sr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -DG_LOG_DOMAIN=\"wocky\" -DWOCKY_COMPILATION -march=native -mtune=native -O2 -pipe -c -o wocky-openssl.lo wocky-openssl.c
libtool: compile: x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wsign-compare -Wnested-externs -Wpointer-arith -Wformat-security -Winit-se
lf -Wno-missing-field-initializers -Wno-unused-parameter -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libxml2 -pthread -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib6
4/glib-2.0/include -DG_LOG_DOMAIN=\"wocky\" -DWOCKY_COMPILATION -march=native -mtune=native -O2 -pipe -c wocky-openssl.c -fPIC -DPIC -o .libs/wocky-openssl.o
wocky-openssl.c: In function ‘check_peer_name’:
wocky-openssl.c:888:23: error: dereferencing pointer to incomplete type ‘X509’ {aka ‘struct x509_st’}
X509_CINF *ci = cert->cert_info;
^~
wocky-openssl.c:909:19: error: dereferencing pointer to incomplete type ‘X509_CINF’ {aka ‘struct x509_cinf_st’}
if (!rval && (ci->extensions != NULL))
^~
wocky-openssl.c:918:22: error: dereferencing pointer to incomplete type ‘X509_EXTENSION’ {aka ‘struct X509_extension_st’}
int len = ext->value->length;
^~
wocky-openssl.c: In function ‘_cert_status’:
wocky-openssl.c:1122:33: error: dereferencing pointer to incomplete type ‘X509_STORE’ {aka ‘struct x509_store_st’}
long old_flags = store->param->flags;
^~
wocky-openssl.c: In function ‘wocky_tls_session_init’:
wocky-openssl.c:1681:31: warning: implicit declaration of function ‘CRYPTO_malloc_init’; did you mean ‘CRYPTO_malloc’? [-Wimplicit-function-declaration]
malloc_init_succeeded = CRYPTO_malloc_init ();
^~~~~~~~~~~~~~~~~~
CRYPTO_malloc
wocky-openssl.c:1681:31: warning: nested extern declaration of ‘CRYPTO_malloc_init’ [-Wnested-externs]
wocky-openssl.c: In function ‘wocky_tls_session_constructed’:
wocky-openssl.c:1781:7: warning: ‘TLSv1_server_method’ is deprecated [-Wdeprecated-declarations]
session->method = (SSL_METHOD *) TLSv1_server_method ();
^~~~~~~
In file included from /usr/include/openssl/opensslconf.h:10,
from /usr/include/openssl/e_os2.h:13,
from /usr/include/openssl/ssl.h:15,
from wocky-openssl.c:47:
/usr/include/openssl/ssl.h:1853:1: note: declared here
DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void))
^~~~~~~~~~~~~~~~~~
wocky-openssl.c:1786:7: warning: ‘TLSv1_client_method’ is deprecated [-Wdeprecated-declarations]
session->method = (SSL_METHOD *) TLSv1_client_method ();
^~~~~~~
In file included from /usr/include/openssl/opensslconf.h:10,
from /usr/include/openssl/e_os2.h:13,
from /usr/include/openssl/ssl.h:15,
from wocky-openssl.c:47:
/usr/include/openssl/ssl.h:1854:1: note: declared here
DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void))
^~~~~~~~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib.h:62,
from /usr/include/glib-2.0/gobject/gbinding.h:28,
from /usr/include/glib-2.0/glib-object.h:23,
from /usr/include/glib-2.0/gio/gioenums.h:28,
from /usr/include/glib-2.0/gio/giotypes.h:28,
from /usr/include/glib-2.0/gio/gio.h:26,
from wocky-tls.h:32,
from wocky-openssl.c:40:
wocky-openssl.c: In function ‘wocky_tls_output_stream_write_async’:
/usr/include/glib-2.0/glib/gmessages.h:337:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
#define g_warning(...) g_log (G_LOG_DOMAIN, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
G_LOG_LEVEL_WARNING, \
~~~~~~~~~~~~~~~~~~~~~~~
__VA_ARGS__)
~~~~~~~~~~~~
wocky-openssl.c:1369:11: note: in expansion of macro ‘g_warning’
g_warning ("write caused read: unsupported TLS re-negotiation?");
^~~~~~~~~
wocky-openssl.c:1373:9: note: here
default:
^~~~~~~
In file included from /usr/include/glib-2.0/glib.h:62,
from /usr/include/glib-2.0/gobject/gbinding.h:28,
from /usr/include/glib-2.0/glib-object.h:23,
from /usr/include/glib-2.0/gio/gioenums.h:28,
from /usr/include/glib-2.0/gio/giotypes.h:28,
from /usr/include/glib-2.0/gio/gio.h:26,
from wocky-tls.h:32,
from wocky-openssl.c:40:
wocky-openssl.c: In function ‘ssl_read_is_complete’:
/usr/include/glib-2.0/glib/gmessages.h:337:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
#define g_warning(...) g_log (G_LOG_DOMAIN, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
G_LOG_LEVEL_WARNING, \
~~~~~~~~~~~~~~~~~~~~~~~
__VA_ARGS__)
~~~~~~~~~~~~
wocky-openssl.c:533:11: note: in expansion of macro ‘g_warning’
g_warning ("read caused write: unsupported TLS re-negotiation?");
^~~~~~~~~
wocky-openssl.c:537:9: note: here
default:
^~~~~~~
make[8]: *** [Makefile:780: wocky-openssl.lo] Error 1
See also downstream bug report: https://bugs.gentoo.org/658902
Which means GHashTable is modified in the foreach loop, which is not allowed.
The debug trace below has additional debug injected into control points touching the table - namely cache_entry_attempt_to_free (../src/vcard-manager.c:451)
(telepathy-gabble:372456): gabble-DEBUG: 00:04:59.275: gabble_disco_finalize (../src/disco.c:254): called with 0x5555557157a0
(telepathy-gabble:372456): gabble-DEBUG: 00:04:59.275: gabble_request_pipeline_dispose (../src/request-pipeline.c:275): disposing request-pipeline
(telepathy-gabble:372456): gabble-DEBUG: 00:04:59.275: gabble_vcard_manager_dispose (../src/vcard-manager.c:546): 0x55555570da80
(telepathy-gabble:372456): gabble-DEBUG: 00:04:59.275: delete_request (../src/vcard-manager.c:730): Discarding request 0x555555ea26a0
(telepathy-gabble:372456): gabble-DEBUG: 00:04:59.275: cache_entry_attempt_to_free (../src/vcard-manager.c:451):
(telepathy-gabble:372456): GLib-CRITICAL **: 00:04:59.276: g_hash_table_foreach: assertion 'version == hash_table->version' failed
Thread 1 "telepathy-gabbl" received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffff7e112e3 in g_logv () from /usr/lib/libglib-2.0.so.0
(gdb)
(gdb) bt
#0 0x00007ffff7e112e3 in g_logv () at /usr/lib/libglib-2.0.so.0
#1 0x00007ffff7e11560 in g_log () at /usr/lib/libglib-2.0.so.0
#2 0x00005555555ebfe0 in gabble_vcard_manager_dispose (object=0x55555570da80) at ../src/vcard-manager.c:560
#3 0x00007ffff7bbd785 in g_object_unref () at /usr/lib/libgobject-2.0.so.0
#4 0x00005555555b99fd in gabble_connection_dispose (object=0x5555557064f0) at ../src/connection.c:1341
#5 0x00007ffff7bbd785 in g_object_unref () at /usr/lib/libgobject-2.0.so.0
#6 0x00007ffff7bcde68 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#7 0x00007ffff7bce210 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#8 0x00005555555bce82 in closed_cb (source=0x5555556e2460, res=0x5555556deb30, user_data=0x5555557064f0) at ../src/connection.c:2511
#9 0x00007ffff7c983d4 in () at /usr/lib/libgio-2.0.so.0
#10 0x00007ffff7c9c7b9 in () at /usr/lib/libgio-2.0.so.0
#11 0x00007ffff7f3d8d1 in complete_close (self=0x5555556e2460, error=0x0) at ../subprojects/wocky/wocky/wocky-c2s-porter.c:864
#12 0x00007ffff7f3e660 in remote_connection_closed (self=0x5555556e2460, error=0x555555f26860) at ../subprojects/wocky/wocky/wocky-c2s-porter.c:1293
#13 0x00007ffff7f4032f in stanza_received_cb (source=0x555555d28430, res=0x5555557661a0, user_data=0x5555556e2460) at ../subprojects/wocky/wocky/wocky-c2s-porter.c:1844
#14 0x00007ffff7c983d4 in () at /usr/lib/libgio-2.0.so.0
#15 0x00007ffff7c9c7b9 in () at /usr/lib/libgio-2.0.so.0
#16 0x00007ffff7f8a5ac in _xmpp_connection_received_data (source=0x7fffdc003310, result=0x555555d73980, user_data=0x555555d28430) at ../subprojects/wocky/wocky/wocky-xmpp-connection.c:514
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.