mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-05 22:55:47 +00:00
78 lines
1.9 KiB
C
78 lines
1.9 KiB
C
/*
|
|
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
*
|
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
*/
|
|
#ifndef INCLUDE_netops_h__
|
|
#define INCLUDE_netops_h__
|
|
|
|
#include "posix.h"
|
|
#include "common.h"
|
|
|
|
#ifdef GIT_SSL
|
|
# include <openssl/ssl.h>
|
|
#endif
|
|
|
|
struct gitno_ssl {
|
|
#ifdef GIT_SSL
|
|
SSL_CTX *ctx;
|
|
SSL *ssl;
|
|
#else
|
|
size_t dummy;
|
|
#endif
|
|
};
|
|
|
|
typedef struct gitno_ssl gitno_ssl;
|
|
|
|
/* Represents a socket that may or may not be using SSL */
|
|
struct gitno_socket {
|
|
GIT_SOCKET socket;
|
|
gitno_ssl ssl;
|
|
};
|
|
|
|
typedef struct gitno_socket gitno_socket;
|
|
|
|
struct gitno_buffer {
|
|
char *data;
|
|
size_t len;
|
|
size_t offset;
|
|
gitno_socket *socket;
|
|
int (*recv)(struct gitno_buffer *buffer);
|
|
void *cb_data;
|
|
};
|
|
|
|
typedef struct gitno_buffer gitno_buffer;
|
|
|
|
/* Flags to gitno_connect */
|
|
enum {
|
|
/* Attempt to create an SSL connection. */
|
|
GITNO_CONNECT_SSL = 1,
|
|
|
|
/* Valid only when GITNO_CONNECT_SSL is also specified.
|
|
* Indicates that the server certificate should not be validated. */
|
|
GITNO_CONNECT_SSL_NO_CHECK_CERT = 2,
|
|
};
|
|
|
|
void gitno_buffer_setup(gitno_socket *t, gitno_buffer *buf, char *data, size_t len);
|
|
void gitno_buffer_setup_callback(gitno_socket *t, gitno_buffer *buf, char *data, size_t len, int (*recv)(gitno_buffer *buf), void *cb_data);
|
|
int gitno_recv(gitno_buffer *buf);
|
|
|
|
void gitno_consume(gitno_buffer *buf, const char *ptr);
|
|
void gitno_consume_n(gitno_buffer *buf, size_t cons);
|
|
|
|
int gitno_connect(gitno_socket *socket, const char *host, const char *port, int flags);
|
|
int gitno_send(gitno_socket *socket, const char *msg, size_t len, int flags);
|
|
int gitno_close(gitno_socket *s);
|
|
int gitno_select_in(gitno_buffer *buf, long int sec, long int usec);
|
|
|
|
int gitno_extract_url_parts(
|
|
char **host,
|
|
char **port,
|
|
char **username,
|
|
char **password,
|
|
const char *url,
|
|
const char *default_port);
|
|
|
|
#endif
|