|
@@ -607,8 +607,7 @@ export_hs_client_circuit_id_haproxy(const edge_connection_t *edge_conn,
|
|
|
const char dst_ipv6[] = "::1";
|
|
|
/* See RFC4193 regarding fc00::/7 */
|
|
|
const char src_ipv6_prefix[] = "fc00:dead:beef:4dad:";
|
|
|
- /* TODO: retain virtual port and use as destination port */
|
|
|
- uint16_t dst_port = 443;
|
|
|
+ uint16_t dst_port = 0;
|
|
|
uint16_t src_port = 1; /* default value */
|
|
|
uint32_t gid = 0; /* default value */
|
|
|
|
|
@@ -618,6 +617,11 @@ export_hs_client_circuit_id_haproxy(const edge_connection_t *edge_conn,
|
|
|
src_port = gid & 0x0000ffff;
|
|
|
}
|
|
|
|
|
|
+ /* Grab the original dest port from the hs ident */
|
|
|
+ if (edge_conn->hs_ident) {
|
|
|
+ dst_port = edge_conn->hs_ident->orig_virtual_port;
|
|
|
+ }
|
|
|
+
|
|
|
/* Build the string */
|
|
|
tor_asprintf(&buf, "PROXY TCP6 %s:%x %s %d %d\r\n",
|
|
|
src_ipv6_prefix, gid, dst_ipv6, src_port, dst_port);
|