Blame src/tls_stream.c

Packit Service 20376f
/*
Packit Service 20376f
 * Copyright (C) the libgit2 contributors. All rights reserved.
Packit Service 20376f
 *
Packit Service 20376f
 * This file is part of libgit2, distributed under the GNU GPL v2 with
Packit Service 20376f
 * a Linking Exception. For full terms see the included COPYING file.
Packit Service 20376f
 */
Packit Service 20376f
Packit Service 20376f
#include "git2/errors.h"
Packit Service 20376f
#include "common.h"
Packit Service 20376f
Packit Service 20376f
#include "openssl_stream.h"
Packit Service 20376f
#include "stransport_stream.h"
Packit Service 20376f
Packit Service 20376f
static git_stream_cb tls_ctor;
Packit Service 20376f
Packit Service 20376f
int git_stream_register_tls(git_stream_cb ctor)
Packit Service 20376f
{
Packit Service 20376f
	tls_ctor = ctor;
Packit Service 20376f
Packit Service 20376f
	return 0;
Packit Service 20376f
}
Packit Service 20376f
Packit Service 20376f
int git_tls_stream_new(git_stream **out, const char *host, const char *port)
Packit Service 20376f
{
Packit Service 20376f
Packit Service 20376f
	if (tls_ctor)
Packit Service 20376f
		return tls_ctor(out, host, port);
Packit Service 20376f
Packit Service 20376f
#ifdef GIT_SECURE_TRANSPORT
Packit Service 20376f
	return git_stransport_stream_new(out, host, port);
Packit Service 20376f
#elif defined(GIT_OPENSSL)
Packit Service 20376f
	return git_openssl_stream_new(out, host, port);
Packit Service 20376f
#else
Packit Service 20376f
	GIT_UNUSED(out);
Packit Service 20376f
	GIT_UNUSED(host);
Packit Service 20376f
	GIT_UNUSED(port);
Packit Service 20376f
Packit Service 20376f
	giterr_set(GITERR_SSL, "there is no TLS stream available");
Packit Service 20376f
	return -1;
Packit Service 20376f
#endif
Packit Service 20376f
}