summaryrefslogtreecommitdiff
path: root/src/rexmpp.h
AgeCommit message (Collapse)Author
2023-12-07Provide a callback after socket creation, use _Booldefanor
The callback is provided to set socket options, instead of individual options such as path_mtu_discovery (which is now removed). Noticed that the Rust rexmpp structure's C representation does not match that of C, since Rust's "bool" maps to C99's "_Bool", while I thought that it maps to "int" (c_int). Adjusted C structures to use "bool" from stdbool.h as well, since C99 (GNU99) is used already.
2023-11-17Implement MUC self-ping (XEP-0410)defanor
2023-09-29Add more checks, tests, and documentationdefanor
2023-09-24Move GnuTLS operations from Jingle module into TLS moduledefanor
2023-09-08Support libexpat as an alternative XML parserdefanor
2023-09-07Build rexmpp_xml_t directly on SAX parsingdefanor
Afterwards it is used for the input queue, too.
2023-08-09Fix pingingdefanor
It was broken since commit 938963c1d1c6a9b929d28a90030332d4f397ca61, since seconds from monotonic clocks were compared to calendar ones. Now last_network_activity is a timespec, using monotonic clocks as well.
2023-06-14Use more pointers to other structures from struct rexmppdefanor
Instead of including them. Those structures can vary depending on configuration options, while for bindings it is easier if they stay the same, and are mere pointers. Besides, some of them may refer to opaque Rust-only structures in the future.
2023-05-23Replace libxml2's xmlNode with a custom XML structuredefanor
The new structure (rexmpp_xml) is simpler, and should allow manipulation from Rust without any dependency on libxml2 from the Rust code (while Rust has its own parsers, such as rxml). Alternative XML parsers (e.g., libexpat) now can be used from the C code. The replacement/abstraction is not quite complete yet: the parsing process itself (xmlParseChunk and friends) should be abstracted out.
2023-05-02Use timespec and monotonic clock for timersdefanor
2023-04-15Add a path MTU discovery setting for TCP socketsdefanor
2021-10-13Implement Jingle RTP sessions with ICE-UDP and DTLS-SRTPdefanor
Works with Dino and Conversations, but currently relying on external players and streamers for actual audio playback and capture. For now requiring GnuTLS and libnice for calls; OpenSSL should be supported as an alternative to the former, and the latter should be made optional, maybe with libjuice as an alternative.
2021-10-02Make libgsasl optionaldefanor
Only EXTERNAL and PLAIN mechanisms are supported without it for now.
2021-10-02Add a couple of HAVE_CURL checksdefanor
2021-10-01Add Jingle file transfer over IBBdefanor
2021-09-25Implement XEP-0363: HTTP File Uploaddefanor
2021-09-25Add recursive feature search (rexmpp_disco_find_feature)defanor
2021-09-25Introduce IQ cachingdefanor
Aiming its usage for service discovery, and possibly similar information retrieval activities.
2021-09-24Pass user-provided pointers to <iq> callback functionsdefanor
2021-09-23Handle XEP-0092: Software Versiondefanor
2021-09-22Reintroduce c-ares as an option for DNS lookupsdefanor
2021-09-21Make libunbound optionaldefanor
Just use gethostbyname when it's disabled. Possibly will add c-ares, getaddrinfo_a, and other options in the future.
2021-09-20Restore client certificate (SASL EXTERNAL) authenticationdefanor
As well as the ability to set a trusted server certificate.
2021-09-19Make GPGME optionaldefanor
2021-09-19Introduce OpenSSL and no-TLS options, in addition to GnuTLSdefanor
Also an option to require TLS is added. There's no DANE TLSA checks with OpenSSL yet, TLS session resumptions and ALPN aren't used with it; just basic connections with certificate verification are added. And now SASL EXTERNAL authentication isn't quite usable.
2021-02-12Set log_function on initialisationdefanor
rexmpp_init may write logs itself, so a logging function should be set for that.
2020-11-30Reconnect on "reset" and "system-shutdown" stream errorsdefanor
2020-11-29Assign random instead of sequential stanza IDsdefanor
2020-11-26Introduce rexmpp_strerrordefanor
2020-11-26Propagate more errors backdefanor
Still not certain whether rexmpp_run should return anything other than REXMPP_E_AGAIN and REXMPP_E_SUCCESS, since the library handles reconnects, but perhaps some errors could be critical. It should be sorted out in the future.
2020-11-22Add the console moduledefanor
2020-11-20Handle XEP-0402: PEP Native Bookmarksdefanor
2020-11-20Add rexmpp_xml_parsedefanor
This is intended mostly for language bindings, which may prefer to avoid libxml2, and to rely on serialized XML for bridging.
2020-11-19Implement XEP-0373: OpenPGP for XMPPdefanor
Various checks and utility functions should still be added, and it currently relies on gpg(1) for key generation and validation, but PEP-based key distribution and basic OpenPGP functionality are there.
2020-11-17Support XEP-0163 (PEP) and XEP-0172 (User Nickname)defanor
2020-11-17Add initial JID parsingdefanor
2020-11-16Update headersdefanor
Forgot to remove <ares.h>.
2020-11-14Remove the c-ares dependencydefanor
2020-11-13Switch from c-ares to libunbounddefanor
libunbound supports DNSSEC, which is needed for DANE TLSA: GnuTLS verifies a certificate for the final host, but SRV and A/AAAA records leading to it should be verified as well. c-ares is still used to parse domain names in SRV records, but should be replaced soon.
2020-09-18Introduce XML input queuedefanor
Instead of processing XML elements from parser callbacks, they are now queued to be processed after parsing. This allows to explicitly return error codes from processing functions, as well as to reset the parser without relying on an additional stream state (REXMPP_STREAM_RESTART, which is removed).
2020-07-19Document a few functions and the weechat plugindefanor
2020-07-05Add presence trackingdefanor
Presence of roster contacts is tracked by rexmpp now (optionally, by default), and the weechat plugin marks online contacts with the "+" prefix.
2020-07-04Fill weechat nicklistsdefanor
The server buffer's nicklist is filled with roster items, and MUC buffers' nicklists are filled with active MUC participants. No MUC role indications, groups, or contact presence tracking yet.
2020-06-04Implement XEP-0199: XMPP Pingdefanor
2020-06-01Add a crude WeeChat plugindefanor
Only usable as an XML console and for basic one-to-one chats, and quite messy, but probably will be extended and refactored later.
2020-05-30Remove callback functions from rexmpp_init argumentsdefanor
Leaving required parameters only (i.e., just an initial JID).
2020-05-09Wrap the SASL property callbackdefanor
So that a library user's SASL property callback gets a pointer to the whole rexmpp structure at once, similarly to other callbacks.
2020-03-29Add initial Entity Capabilities supportdefanor
Only announcing our own capabilities in the initial <presence>.
2020-03-28Handle service discovery requestsdefanor
2020-03-27Move roster functions into a separate filedefanor