/* This is only for 2 stage comics and redirects */ int release_connection(struct connection *conn) { if (verbose > 2) printf("Release %s\n", conn->url); #ifdef WANT_SSL openssl_close(conn); #endif if (conn->poll && conn->poll->fd != -1) { closesocket(conn->poll->fd); conn->poll->fd = -1; } conn->poll = NULL; if (conn->out >= 0) { close(conn->out); conn->out = -1; } conn->func = NULL; conn->connected = 0; gzip_free(conn); free_buf(conn); return 0; }
int openssl_connect(git_stream *stream) { int ret; openssl_stream *st = (openssl_stream *) stream; if ((ret = git_stream_connect((git_stream *)st->socket)) < 0) return ret; if ((ret = SSL_set_fd(st->ssl, st->socket->s)) <= 0) { openssl_close((git_stream *) st); return ssl_set_error(st->ssl, ret); } if ((ret = SSL_connect(st->ssl)) <= 0) return ssl_set_error(st->ssl, ret); return verify_server_cert(st->ssl, st->socket->host); }
int openssl_connect(git_stream *stream) { int ret; openssl_stream *st = (openssl_stream *) stream; if ((ret = git_stream_connect((git_stream *)st->socket)) < 0) return ret; if ((ret = SSL_set_fd(st->ssl, st->socket->s)) <= 0) { openssl_close((git_stream *) st); return ssl_set_error(st->ssl, ret); } /* specify the host in case SNI is needed */ SSL_set_tlsext_host_name(st->ssl, st->socket->host); if ((ret = SSL_connect(st->ssl)) <= 0) return ssl_set_error(st->ssl, ret); return verify_server_cert(st->ssl, st->socket->host); }