Commit Graph

65 Commits

Author SHA1 Message Date
Dmitry Podgorny
070a64d9d5 WIP Unify error codes returned to the connection handler
Error argument in the connection handler is not always set and in some
cases provides meaningless values. For example, every TLS module returns
its specific error codes.

Current solution unifies error codes and allows to distinguish between
different types of disconnection.

Fixes #123.
2020-09-16 02:28:37 +03:00
Dmitry Podgorny
7c68aced35 stanza: add xmpp_stanza_reply_error()
This function makes an error reply stanza as described in
https://tools.ietf.org/html/rfc6120#section-8.3
2020-09-15 02:19:20 +03:00
Dmitry Podgorny
428681a185 stanza: add xmpp_stanza_new_from_string()
This function creates a stanza object from a string. The string must
contain a single complete stanza. Multiple stanzas will lead to memory
leak and this is not handled in the patch.
2020-06-04 03:44:21 +03:00
Dmitry Podgorny
3dcc5a60f2 Introduce global timed handlers
There are situations when applications need more predictable timed
handlers that don't depend on connection status. Other usecase of
the global handlers is to manage offline connections, for example,
reconnect after a disconnection.
2020-06-03 02:11:40 +03:00
Dmitry Podgorny
562a06425b Unify coding style
@sjaeckel integrated clang-format with formal coding style. Run his
script and commit changes.

There are pros and cons of this commit.

Mixed coding style is a "broken window". A good single style simplifies
reading and writing code.

On the other hand, this is a big change which will lead to conflicts.
2020-01-31 01:16:50 +02:00
Steffen Jaeckel
abd1b08a97 trim trailing spaces 2020-01-31 01:14:32 +02:00
Dmitry Podgorny
8cfb2d2a03 XEP-0077: add examples/register
XEP-0077 will not be implemented as part of libstrophe's API, but an
example is provided. The example shows how to use the "raw" connection
to register a user.

Closes #54.
2020-01-25 22:59:19 +02:00
Dmitry Podgorny
4b04db6b2d stanza: add xmpp_stanza_add_child_ex()
This function is introduced by NetXMS project.
2020-01-10 00:49:45 +02:00
Dmitry Podgorny
cecd6b20e8 stanza: add xmpp_stanza_get_context()
This function is backported from UnrealEngine project.
2020-01-07 22:13:39 +02:00
Dmitry Podgorny
2272681ea2 conn: add state checking API
New boolean functions:
  xmpp_conn_is_connecting()
  xmpp_conn_is_connected()
  xmpp_conn_is_disconnected()

These functions are backported from UnrealEngine project.
2020-01-07 22:12:11 +02:00
Michael Vetter
cbe6701c14 Add xmpp_stanza_get_child_by_name_and_ns()
I think it's fairly common in the XMPP world to actually want a stanza
by it's NS but also want a certain name.

For example this was needed in Profanity:
68af0aad65
2019-11-25 13:58:05 +00:00
Dmitry Podgorny
30f3cc9263 auth: disable legacy auth by default
Legacy authentication can expose password in plaintext. Since this is
not widely used mechanism, disable it by default. It can be enabled back
with connection option XMPP_CONN_FLAG_LEGACY_AUTH.
2019-10-01 22:34:31 +03:00
Dmitry Podgorny
27f613bc84 stanza: small fixes in xmpp_error_new()
- Receive const text
 - Move variable declaration to the beginning of the block
2018-02-18 13:18:43 +02:00
Ilya Orlov
032e8ec89d Added new stanza for error responce, libstrophe now will be responce <stream:error> if parser failed 2017-09-04 11:46:09 +03:00
Dmitry Podgorny
666995531a ChangeLog: mention recent changes
- Certificate verification is enabled for all openssl versions by
   default
 - xmpp_ctx_set_timeout()
 - Move xmpp_ctx_set_timeout() to event loop section in strophe.h
2017-07-04 19:22:26 +03:00
Dmitry Podgorny
9269d6b0d5 conn: add flag XMPP_CONN_FLAG_TRUST_TLS
TLS modules accept invalid server's certificates when the flag is set.
2017-07-04 17:20:33 +03:00
Steffen Jaeckel
4c504ee42b add xmpp_ctx_set_timeout() 2017-06-29 16:58:11 +02:00
Dmitry Podgorny
1e422a70dd crypto: add public function xmpp_sha1_digest()
For example, XEP-0115 requires binary digest to be base64-encoded.
Add short function to simplify such a digest computation for a single
buffer. This function doesn't allocate memory. Therefore, it can't
fail and doesn't require strophe context (xmpp_ctx_t).
2017-06-26 00:56:03 +03:00
Dmitry Podgorny
229215b49c conn: xmpp_conn_open_stream() sends user-supplied tag
Default opening tag doesn't allow to implement XEP-0174. In this case
client needs to send specific attributes. As solution user passes
attributes that are sent inside opening tag. Previous variant of this
function is renamed to xmpp_conn_open_stream_default().

The way to pass attributes is not the best one, but it's used to conform
existent interface of xmpp_stanza_get_attributes().

Remove "raw" suffix from functions that work with a raw connection.
2016-09-06 22:06:29 +03:00
Dmitry Podgorny
dc56737b71 conn: implemented xmpp_connect_raw()
This function is similar to xmpp_connect_client(), but doesn't perform
authentication. Instead, it calls user's connection handler immediately
after establishing the connection. Hence, user can implement own
authendication or registration procedures.

Such a "raw" connection can be useful when user interaction is required
(e.g. Data Forms in XEP-0077, OAuth2).
2016-09-02 00:47:58 +03:00
Dmitry Podgorny
2ffb278aa4 Implemented public Base64 interface
Base64 is required for vCard avatars. It will also be useful for
an authentication mechanism with future xmpp_connect_raw() interface.
2016-04-30 18:09:01 +00:00
Dmitry Podgorny
e4a4bdd3a3 Implemented public SHA1 interface
A number of XEPs require SHA1. Publishing its interface helps user to
reduce number of dependencies.
2016-04-29 22:51:23 +00:00
Dmitry Podgorny
71d90d60a5 Fixed comments inside strophe.h
Don't use doxygen comments in strophe.h since functions are documented
in *.c files.
Remove mutex from xmpp_log_t because libstrophe is single-thread
library.
2016-04-29 22:51:23 +00:00
Dmitry Podgorny
a3da77b8f6 stanza: return const char* for non allocated strings
If interface function returns char* the result must be freed with
xmpp_free().

In case of const char* the result must not be changed by user. Also, the
result is valid only during stanza lifetime.
2016-04-27 11:56:50 +00:00
Dmitry Podgorny
a50d706bcd stanza: added helpers for particular stanzas
These are wrappers for message, iq and presence stanzas.
2016-04-26 19:19:51 +00:00
Dmitry Podgorny
ca7af9c837 Fixed indentation and typos 2016-04-26 19:19:51 +00:00
Dmitry Podgorny
211748e65a Replace bit mask hex values with shifts 2016-04-26 13:01:22 +00:00
Andrey (Stanson) Kozin
6c1c2a86f8 TCP keepalive setting support 2016-04-08 16:40:56 +00:00
Tristan Le Guern
9de0293405 Implement xmpp_stanza_reply()
This function creates a copy of the given stanza minus its children and
set the “to” attribute with the value of the original “from”.
2015-10-20 16:26:43 +03:00
Tristan Le Guern
21f742f888 Implement xmpp_stanza_del_attribute() 2015-10-20 16:26:43 +03:00
Tristan Le Guern
90a595f8ef Implements helpers for to and from attributes
xmpp_stanza_{get,set}_{from,to}
2015-10-20 15:22:20 +03:00
Dmitry Podgorny
182803926b conn: added new API xmpp_conn_set_flags()
xmpp_conn_set_flags() and xmpp_conn_get_flags() unify interface of
connection configuration.
This interface allows compile-time check of supported features or even
run-time check. Therefore, applications can be built with older
libstrophe which doesn't support some optional flags.
2015-10-15 16:01:13 +03:00
Tristan Le Guern
a4558b69df Publicly expose JID manipulation functions 2015-10-13 01:11:25 +03:00
Dmitry Podgorny
b7fbc81740 conn: added API xmpp_conn_is_secured()
This patch is provided by @kjkao. New API is already used in
WorksSystems/wks_xep0047.
2015-10-13 00:10:02 +03:00
Dmitry Podgorny
36af7afa27 conn: implemented old-style SSL connection
Added new API xmpp_conn_set_old_style_ssl(). This function forces
using of old-style SSL connection.
2015-10-12 22:25:39 +03:00
Dmitry Podgorny
8627fbb13f Implemented UUID generation (RFC4122)
This patch adds new API:
  * xmpp_uuid_gen()
2015-10-12 15:17:22 +03:00
Dmitry Podgorny
5e64c850bd Added stddef.h to strophe.h to define size_t 2015-10-12 15:02:59 +03:00
Dmitry Podgorny
3d4c657467 Removed stdio.h from strophe.h 2015-10-11 05:25:19 +03:00
Tristan Le Guern
75938845fd Add missing prototypes to strophe.h 2015-10-07 19:46:55 +03:00
Milan Kubík
5d76e052ec XEP-0114: external component authentication
New API xmpp_connect_component() introduced.
2014-12-15 14:41:18 +02:00
Dariusz Dwornikowski
71f75b2e2e Closes #31 2014-10-23 08:44:52 +02:00
James Booth
9615a55856 Added option to disable TLS
The connection object includes a tls_support flag, which can
be disabled with xmpp_conn_disable_tls().
2012-05-20 01:50:32 +01:00
Dustin Sallings
d048124969 Capture the bound jid.
I'd kind of like to be able to discover the JID with full resource for
some operations.
2009-06-15 14:37:21 -07:00
Jack Moffitt
370a371800 Dual licensed libstrophe under MIT and GPLv3.
Updated copyright headers.
2009-06-15 15:26:10 -06:00
Pedro Melo
091f5aab71 Promote xmpp_send_raw and xmpp_send_raw_string to the public API
If you receive XML data to send from some place else in your app, you just want to send it.

Signed-off-by: Jack Moffitt <jack@metajack.im>
2009-01-25 10:37:58 -07:00
Pedro Melo
f27f2c5ba2 Promote xmpp_free to the public API
Some other APIs, like xmpp_stanza_to_text, return a point that must be freed by the caller with this API.

Signed-off-by: Jack Moffitt <jack@metajack.im>
2009-01-25 10:36:10 -07:00
Matthew Wild
757d5bad74 + Add xmpp_conn_get_context() to get the ctx a connection belongs to. Fixes #10
* Properly use altdomain when no SRV record. Fixes #2
- Remove unused function declarations from strophe.h. Fixes #1
2008-09-18 03:56:08 +00:00
Jack Moffitt
2befeee9e5 Added two new api functions, xmpp_stanza_is_text() and xmpp_stanza_is_tag() to determine the type of stanza. 2008-08-26 04:39:19 +00:00
Jack Moffitt
1054c74c4a Fix xmpp_stanza_get_text() to work on text stanzas, and add xmpp_stanza_get_text_ptr() to optimize for data translation. 2008-08-26 04:30:05 +00:00
Jack Moffitt
3b47afaac9 Fix warnings and line endings from previous SRV commit. Get rid of domain parameter of xmpp_connect_client(). Remove usused handler.c helper left over from previous commit. 2008-07-03 05:20:59 +00:00