mirror of
https://github.com/aljazceru/lightning.git
synced 2026-02-08 15:44:19 +01:00
gossip/tor: rearrange functions to avoid predeclarations.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
123
gossipd/tor.c
123
gossipd/tor.c
@@ -41,81 +41,6 @@ struct reaching_socks {
|
||||
struct reaching *reach;
|
||||
};
|
||||
|
||||
static struct io_plan *connect_finish(struct io_conn *,
|
||||
struct reaching_socks *);
|
||||
|
||||
static struct io_plan *connect_finish2(struct io_conn *,
|
||||
struct reaching_socks *);
|
||||
|
||||
static struct io_plan *connect_out(struct io_conn *, struct reaching_socks *);
|
||||
|
||||
static struct io_plan *io_tor_connect_after_req_to_connect(struct io_conn *,
|
||||
struct reaching_socks
|
||||
*);
|
||||
static struct io_plan *io_tor_connect_after_req_host(struct io_conn *,
|
||||
struct reaching_socks *);
|
||||
|
||||
static struct io_plan *io_tor_connect_do_req(struct io_conn *,
|
||||
struct reaching_socks *);
|
||||
|
||||
static struct io_plan *connect_out(struct io_conn *, struct reaching_socks *);
|
||||
|
||||
static struct io_plan *io_tor_connect_do_req(struct io_conn *,
|
||||
struct reaching_socks *);
|
||||
|
||||
static struct io_plan *io_tor_connect_after_resp_to_connect(struct io_conn
|
||||
*conn,
|
||||
struct
|
||||
reaching_socks *);
|
||||
|
||||
static struct io_plan *io_tor_connect_after_resp_to_connect(struct io_conn
|
||||
*conn,
|
||||
struct
|
||||
reaching_socks
|
||||
*reach)
|
||||
{
|
||||
if (reach->buffer[1] == SOCKS_ERROR) {
|
||||
status_trace("Connected out for %s error", reach->host);
|
||||
return io_close(conn);
|
||||
}
|
||||
/* make the V5 request */
|
||||
reach->hlen = strlen(reach->host);
|
||||
reach->buffer[0] = SOCKS_V5;
|
||||
reach->buffer[1] = SOCKS_CONNECT;
|
||||
reach->buffer[2] = 0;
|
||||
reach->buffer[3] = SOCKS_DOMAIN;
|
||||
reach->buffer[4] = reach->hlen;
|
||||
|
||||
memcpy(reach->buffer + SOCK_REQ_V5_LEN, reach->host, reach->hlen);
|
||||
memcpy(reach->buffer + SOCK_REQ_V5_LEN + strlen(reach->host),
|
||||
&(reach->port), sizeof reach->port);
|
||||
|
||||
return io_write(conn, reach->buffer,
|
||||
SOCK_REQ_V5_HEADER_LEN + reach->hlen,
|
||||
io_tor_connect_after_req_host, reach);
|
||||
}
|
||||
|
||||
static struct io_plan *io_tor_connect_after_req_to_connect(struct io_conn *conn,
|
||||
struct reaching_socks
|
||||
*reach)
|
||||
{
|
||||
|
||||
return io_read(conn, reach->buffer, 2,
|
||||
&io_tor_connect_after_resp_to_connect, reach);
|
||||
}
|
||||
|
||||
static struct io_plan *io_tor_connect_do_req(struct io_conn *conn,
|
||||
struct reaching_socks *reach)
|
||||
{
|
||||
/* make the init request */
|
||||
reach->buffer[0] = SOCKS_V5;
|
||||
reach->buffer[1] = 1;
|
||||
reach->buffer[2] = SOCKS_NOAUTH;
|
||||
|
||||
return io_write(conn, reach->buffer, SOCK_REQ_METH_LEN,
|
||||
&io_tor_connect_after_req_to_connect, reach);
|
||||
}
|
||||
|
||||
static struct io_plan *connect_finish2(struct io_conn *conn,
|
||||
struct reaching_socks *reach)
|
||||
{
|
||||
@@ -175,6 +100,54 @@ static struct io_plan *io_tor_connect_after_req_host(struct io_conn *conn,
|
||||
return connect_out(conn, reach);
|
||||
}
|
||||
|
||||
static struct io_plan *io_tor_connect_after_resp_to_connect(struct io_conn
|
||||
*conn,
|
||||
struct
|
||||
reaching_socks
|
||||
*reach)
|
||||
{
|
||||
if (reach->buffer[1] == SOCKS_ERROR) {
|
||||
status_trace("Connected out for %s error", reach->host);
|
||||
return io_close(conn);
|
||||
}
|
||||
/* make the V5 request */
|
||||
reach->hlen = strlen(reach->host);
|
||||
reach->buffer[0] = SOCKS_V5;
|
||||
reach->buffer[1] = SOCKS_CONNECT;
|
||||
reach->buffer[2] = 0;
|
||||
reach->buffer[3] = SOCKS_DOMAIN;
|
||||
reach->buffer[4] = reach->hlen;
|
||||
|
||||
memcpy(reach->buffer + SOCK_REQ_V5_LEN, reach->host, reach->hlen);
|
||||
memcpy(reach->buffer + SOCK_REQ_V5_LEN + strlen(reach->host),
|
||||
&(reach->port), sizeof reach->port);
|
||||
|
||||
return io_write(conn, reach->buffer,
|
||||
SOCK_REQ_V5_HEADER_LEN + reach->hlen,
|
||||
io_tor_connect_after_req_host, reach);
|
||||
}
|
||||
|
||||
static struct io_plan *io_tor_connect_after_req_to_connect(struct io_conn *conn,
|
||||
struct reaching_socks
|
||||
*reach)
|
||||
{
|
||||
|
||||
return io_read(conn, reach->buffer, 2,
|
||||
&io_tor_connect_after_resp_to_connect, reach);
|
||||
}
|
||||
|
||||
static struct io_plan *io_tor_connect_do_req(struct io_conn *conn,
|
||||
struct reaching_socks *reach)
|
||||
{
|
||||
/* make the init request */
|
||||
reach->buffer[0] = SOCKS_V5;
|
||||
reach->buffer[1] = 1;
|
||||
reach->buffer[2] = SOCKS_NOAUTH;
|
||||
|
||||
return io_write(conn, reach->buffer, SOCK_REQ_METH_LEN,
|
||||
&io_tor_connect_after_req_to_connect, reach);
|
||||
}
|
||||
|
||||
// called when we want to connect to TOR SOCKS5
|
||||
struct io_plan *io_tor_connect(struct io_conn *conn,
|
||||
const struct wireaddr *tor_proxyaddrs,
|
||||
|
||||
Reference in New Issue
Block a user