pidgin/pidgin

Implement SNI support for the gnutls SSL plugin.
release-2.x.y
2019-12-16, Mihai Moldovan
6dba8046e1b1
Implement SNI support for the gnutls SSL plugin.

Note that gnutls is picky in regard to what it accepts as the server name - it
MUST be a domain name. IP addresses are not supported according to the
documentation.

Hence, filter out IP addresses and hope that whatever is not recognized as
such an address is actually a domain name. This will probably fail for more
exotic addresses (especially in IPv6 realm), but wiring up a full-blown parser
is too much effort and SSL plugins are not part of purple-3 anyway.

Fixes #17300
#ifndef TESTS_H
# define TESTS_H
#include "../purple.h"
#include <check.h>
/* define the test suites here */
/* remember to add the suite to the runner in check_libpurple.c */
Suite * master_suite(void);
Suite * cipher_suite(void);
Suite * jabber_caps_suite(void);
Suite * jabber_digest_md5_suite(void);
Suite * jabber_jutil_suite(void);
Suite * jabber_scram_suite(void);
Suite * oscar_util_suite(void);
Suite * util_suite(void);
Suite * xmlnode_suite(void);
/* helper macros */
#define assert_int_equal(expected, actual) { \
fail_if(expected != actual, "Expected '%d' but got '%d'", expected, actual); \
}
#define assert_string_equal(expected, actual) { \
const gchar *a = actual; \
fail_unless(purple_strequal(expected, a), "Expected '%s' but got '%s'", expected, a); \
}
#define assert_string_equal_free(expected, actual) { \
gchar *b = actual; \
assert_string_equal(expected, b); \
g_free(b); \
}
#endif /* ifndef TESTS_H */