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
/* This file contains macros that wrap calls to the purple dbus module.
These macros call the appropriate functions if the build includes
dbus support and do nothing otherwise. See "dbus-server.h" for
documentation. */
#ifndef _PURPLE_DBUS_MAYBE_H_
#define _PURPLE_DBUS_MAYBE_H_
#ifdef HAVE_DBUS
#ifndef DBUS_API_SUBJECT_TO_CHANGE
#define DBUS_API_SUBJECT_TO_CHANGE
#endif
#include "dbus-server.h"
/* this provides a type check */
#define PURPLE_DBUS_REGISTER_POINTER(ptr, type) { \
type *typed_ptr = ptr; \
purple_dbus_register_pointer(typed_ptr, PURPLE_DBUS_TYPE(type)); \
}
#define PURPLE_DBUS_UNREGISTER_POINTER(ptr) purple_dbus_unregister_pointer(ptr)
#else /* !HAVE_DBUS */
#define PURPLE_DBUS_REGISTER_POINTER(ptr, type) { \
if (ptr) {} \
}
#define PURPLE_DBUS_UNREGISTER_POINTER(ptr)
#define DBUS_EXPORT
#endif /* HAVE_DBUS */
#endif