Set ALPN info on XMPP connections if GIO >= 2.60

This commit is contained in:
fiaxh 2019-11-29 16:03:18 +01:00
parent 1985fe1d7b
commit d194eae61d
3 changed files with 19 additions and 3 deletions

View file

@ -146,9 +146,9 @@ function(vala_precompile output)
endforeach(pkg ${ARGS_PACKAGES}) endforeach(pkg ${ARGS_PACKAGES})
set(vala_define_opts "") set(vala_define_opts "")
foreach(def ${ARGS_DEFINTIONS}) foreach(def ${ARGS_DEFINITIONS})
list(APPEND vala_define_opts "--define=${def}") list(APPEND vala_define_opts "--define=${def}")
endforeach(def ${ARGS_DEFINTIONS}) endforeach(def ${ARGS_DEFINITIONS})
set(custom_vapi_arguments "") set(custom_vapi_arguments "")
if(ARGS_CUSTOM_VAPIS) if(ARGS_CUSTOM_VAPIS)
@ -212,6 +212,7 @@ function(vala_precompile output)
${VALA_EXECUTABLE} ${VALA_EXECUTABLE}
ARGS ARGS
--fast-vapi ${fast_vapi_file} --fast-vapi ${fast_vapi_file}
${vala_define_opts}
${ARGS_OPTIONS} ${ARGS_OPTIONS}
${VALAC_FLAGS} ${VALAC_FLAGS}
${in_file} ${in_file}

View file

@ -6,6 +6,16 @@ find_packages(ENGINE_PACKAGES REQUIRED
GObject GObject
) )
set(ENGINE_DEFINITIONS "")
find_package(GIO)
if(GIO_VERSION VERSION_GREATER "2.60")
message(STATUS "ALPN support enabled")
set(ENGINE_DEFINITIONS ALPN_SUPPORT)
else()
message(STATUS "No ALPN support, needs GIO >= 2.60")
endif()
vala_precompile(ENGINE_VALA_C vala_precompile(ENGINE_VALA_C
SOURCES SOURCES
"src/glib_fixes.vapi" "src/glib_fixes.vapi"
@ -91,6 +101,8 @@ GENERATE_VAPI
xmpp-vala xmpp-vala
GENERATE_HEADER GENERATE_HEADER
xmpp-vala xmpp-vala
DEFINITIONS
${ENGINE_DEFINITIONS}
) )
add_custom_target(xmpp-vala-vapi add_custom_target(xmpp-vala-vapi

View file

@ -39,6 +39,9 @@ public class TlsConnectionProvider : ConnectionProvider {
debug("Connecting to %s %i (tls)", srv_target.get_hostname(), srv_target.get_port()); debug("Connecting to %s %i (tls)", srv_target.get_hostname(), srv_target.get_port());
IOStream? io_stream = yield client.connect_to_host_async(srv_target.get_hostname(), srv_target.get_port()); IOStream? io_stream = yield client.connect_to_host_async(srv_target.get_hostname(), srv_target.get_port());
TlsConnection tls_connection = TlsClientConnection.new(io_stream, new NetworkAddress(stream.remote_name.to_string(), srv_target.get_port())); TlsConnection tls_connection = TlsClientConnection.new(io_stream, new NetworkAddress(stream.remote_name.to_string(), srv_target.get_port()));
#if ALPN_SUPPORT
tls_connection.set_advertised_protocols(new string[]{"xmpp-client"});
#endif
tls_connection.accept_certificate.connect(stream.get_module(Tls.Module.IDENTITY).on_invalid_certificate); tls_connection.accept_certificate.connect(stream.get_module(Tls.Module.IDENTITY).on_invalid_certificate);
stream.add_flag(new Tls.Flag() { finished=true }); stream.add_flag(new Tls.Flag() { finished=true });
return tls_connection; return tls_connection;