Commit Graph

234 Commits

Author SHA1 Message Date
Dmitry Podgorny
75b19be572 unify _sleep() macro in event.c 2016-08-30 19:43:05 +03:00
Dmitry Podgorny
14066d0bff resolver: fix commit 171b285 2016-08-29 20:09:45 +03:00
Chih-Wei Chen
171b285cbe sock : Add DNS-SRV list sorted by priority and weight, check result connection. 2016-08-29 11:32:20 +03:00
Dmitry Podgorny
1a657c67e2 Fixed typo 2016-05-21 01:28:39 +03:00
Dmitry Podgorny
3e86987f5f sock: fixed build on cygwin
Cygwin doesn't have TCP_KEEPIDLE nor TCP_KEEPALIVE. Therefore, don't
change any tcp keepalive parameter on this system.
2016-05-11 11:30:21 +03:00
Dmitry Podgorny
e83d0d6b62 SCRAM-SHA-1: fixed base64-decoding of salt
Salt can contain 0x00, therefore must be decoded with
xmpp_base64_decode_bin().
2016-05-08 09:01:20 +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
7f57e3987a tests/resolver: don't link against -lstrophe 2016-04-30 16:40:10 +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
b5d9b33b6f Refactor rand
* Removed dependency from internal headers in rand.h. xmpp_rand
  interface can be public in the future;
* xmpp_rand functions accept xmpp_rand_t object instead of xmpp_ctx_t.
2016-04-29 22:51:23 +00:00
Dmitry Podgorny
192ab59608 resolver: fixed uninitialised var 2016-04-28 20:40:16 +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
a2834f8f92 conn: fixed doxygen comments 2016-04-26 20:27:25 +00:00
Dmitry Podgorny
2ef432f632 conn: xmpp_conn_set_keepalive() stores parameters in conn
Store keepalive parameters in conn object. This allows call the function
with a disconnected conn. Also, the parameters are not cleared on
reconnect and applied once a socket is created.
2016-04-26 19:48:34 +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
a65679dd72 conn: removed unused fields from xmpp_conn_t 2016-04-26 13:03:16 +00:00
Dmitry Podgorny
211748e65a Replace bit mask hex values with shifts 2016-04-26 13:01:22 +00:00
Dmitry Podgorny
4c0c12343f sha1: moved SHA1HANDSOFF definition 2016-04-22 21:30:17 +00:00
Dmitry Podgorny
96873984b2 conn: handle stream tag properly
If `id == NULL' there were two issues: use-after-free error or
logging wrong error description.
Also open stream handler was called even when error occured and
conn object was disconnected.
2016-04-22 21:04:29 +00:00
Dmitry Podgorny
b06599963b conn: make xmpp_conn_t object reusable
Disconnected xmpp_conn_t object can be connected again. The object
is reset before connection, but the next fields remain untoucned:
  * all handlers
  * flags
  * jid and password

Main use-case of this change is reconnect when an error occurs.
2016-04-22 20:52:36 +00:00
Dmitry Podgorny
ab80d72518 tls/openssl: handle SSL_shutdown() properly
Handle SSL_ERROR_WANT_READ/WRITE and return value 0.
2016-04-19 19:57:52 +00:00
Dmitry Podgorny
ba7422c893 tls/openssl: be more verbose
Log non-recoverable errors. The openssl error queue can contain useful
information.
2016-04-19 18:21:27 +00:00
Dmitry Podgorny
4b444ea699 tls/openssl: fixed indentation 2016-04-19 16:33:47 +00:00
Dmitry Podgorny
96dc61c772 sock: use sock_close() instead of close() 2016-04-16 20:19:16 +00:00
Andrey (Stanson) Kozin
f5c2c81142 Added conn_send_queue_purge() function.
Function frees all data and clean send queue in
    xmpp_conn_release()
    xmpp_connect_client()
    xmpp_connect_component()
2016-04-15 16:08:24 +00:00
Dmitry Podgorny
85bf3f4241 conn: don't set flag in xmpp_conn_disable_tls() directly
Instead, use xmpp_conn_set_flags() interface to force all necessary
checks.
2016-04-13 12:43:03 +00:00
Dmitry Podgorny
e60895087e event: let event loop start after xmpp_stop() 2016-04-13 10:25:15 +00:00
Dmitry Podgorny
b169c0a91e conn: refactore connect functions
Common code is moved to a separated function.
2016-04-12 20:19:16 +00:00
Dmitry Podgorny
968cb7dcdf conn: fixed indentation 2016-04-12 20:07:58 +00:00
Dmitry Podgorny
367aeb5844 conn: don't set tcp keepalives for disconnected connection
In XMPP_CONN_DISCONNECTED state conn->sock is undefined.
2016-04-08 18:17:07 +00:00
Dmitry Podgorny
5518a9e10a sock: refactore tcp keepalive setting
- Leave default number of keepalive probes rather than hardcoded value
- QNX and OSX use TCP_KEEPALIVE instead of TCP_KEEPIDLE
- QNX doesn't have TCP_KEEPINTVL
2016-04-08 18:12:48 +00:00
Andrey (Stanson) Kozin
6c1c2a86f8 TCP keepalive setting support 2016-04-08 16:40:56 +00:00
Dmitry Podgorny
b7e308d057 Implemented resolver to replace sock_srv_lookup() 2016-02-20 00:15:08 +02:00
Andrey (Stanson) Kozin
714b2f9c03 Free send queue on connection release 2016-02-06 00:10:21 +00:00
Dmitry Podgorny
5b41247bac rand: remove sizeof(uint8_t) because it's always 1 2016-01-10 13:05:30 +02:00
vf
fc563272fe Fix for MSVC 2016-01-09 17:57:32 +03:00
Dmitry Podgorny
38545af533 parser/expat: reduce code duplication 2015-12-21 13:46:51 +02:00
Dmitry Podgorny
a1bc5e82cf sha1: don't make in-place operations
SHA1HANDSOFF makes SHA1_Transform() use an internal buffer.
2015-12-06 11:11:52 +02:00
Dmitry Podgorny
01af2deed9 conn: fixed memory leak
Memory leak appeared when xmpp_connect_client() was called for a
connection more than once. In this case conn->domain wasn't freed.
2015-10-23 01:28:19 +03:00
Dmitry Podgorny
2aea1a627c stanza: avoid copy-paste in 'get' functions 2015-10-21 02:13:55 +03:00
Dmitry Podgorny
e475ca13ea stanza: handle errors better
* Free memory on error in xmpp_stanza_set_attribute()
* Handle memory allocation error in xmpp_stanza_set_text()
2015-10-21 02:11:03 +03:00
Dmitry Podgorny
c012f20c99 stanza: handle EMEM in xmpp_stanza_set_name() 2015-10-20 16:26:43 +03: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
0d4bcc0228 Extract the copy loop into its own function
It will help reduce code duplication for xmpp_stanza_copy
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
a39267c1b0 conn: use altport for legacy ssl if specified 2015-10-19 22:42:44 +03:00
Dmitry Podgorny
9cea7e4002 md5: cleanup
* Indentation
* Removed MD5DumpBytes()
* Removed ASM_MD5
2015-10-18 03:03:15 +03:00
Dmitry Podgorny
f63aba88d4 conn: fixed indentations 2015-10-18 02:22:15 +03:00