if ((iso & ISO_DESTADDR) &&
strcasecmp(a->original_dest_address, b->original_dest_address))
return 0;
- /* XXXX023 Waititing for ticket #1666 */
- /*
if ((iso & ISO_SOCKSAUTH) &&
- strcasecmp(a->socks_request->auth, b->socks_request->auth))
+ (strcmp_opt(a->socks_request->username, b->socks_request->username) ||
+ strcmp_opt(a->socks_request->password, b->socks_request->password)))
return 0;
- */
if ((iso & ISO_CLIENTPROTO) &&
(TO_CONN(a)->type != TO_CONN(b)->type ||
a->socks_request->socks_version != b->socks_request->socks_version))
if ((iso & ISO_DESTADDR) &&
strcasecmp(conn->original_dest_address, circ->dest_address))
return 0;
- /* XXXX023 Waititing for ticket #1666 */
- /*
if ((iso & ISO_SOCKSAUTH) &&
- strcasecmp(a->socks_request->auth, b->socks_request->auth))
+ (strcmp_opt(conn->socks_request->username, circ->socks_username) ||
+ strcmp_opt(conn->socks_request->password, circ->socks_password)))
return 0;
- */
if ((iso & ISO_CLIENTPROTO) &&
(TO_CONN(conn)->type != circ->client_proto_type ||
conn->socks_request->socks_version != circ->client_proto_socksver))
tor_addr_copy(&circ->client_addr, &TO_CONN(conn)->addr);
circ->session_group = conn->session_group;
circ->nym_epoch = conn->nym_epoch;
- /* XXXX023 auth too, once #1666 is in. */
+ circ->socks_username = conn->socks_request->username ?
+ tor_strdup(conn->socks_request->username) : NULL;
+ circ->socks_password = conn->socks_request->password ?
+ tor_strdup(conn->socks_request->password) : NULL;
circ->isolation_values_set = 1;
return 0;
mixed |= ISO_DESTPORT;
if (strcasecmp(conn->original_dest_address, circ->dest_address))
mixed |= ISO_DESTADDR;
- /* XXXX023 auth too, once #1666 is in. */
+ if (strcmp_opt(conn->socks_request->username, circ->socks_username) ||
+ strcmp_opt(conn->socks_request->password, circ->socks_password))
+ mixed |= ISO_SOCKSAUTH;
if ((TO_CONN(conn)->type != circ->client_proto_type ||
conn->socks_request->socks_version != circ->client_proto_socksver))
mixed |= ISO_CLIENTPROTO;
tor_free(circ->dest_address);
circ->session_group = -1;
circ->nym_epoch = 0;
+ tor_free(circ->socks_username);
+ tor_free(circ->socks_password);
}
char *original_dest_address;
/* Other fields to isolate on already exist. The ClientAddr is addr. The
ClientProtocol is a combination of type and socks_request->
- socks_version. SocksAuth will be added to socks_request by ticket
- #1666. DestAddr is in socks_request->address. */
+ socks_version. SocksAuth is socks_request->username/password.
+ DestAddr is in socks_request->address. */
/** Number of times we've reassigned this application connection to
* a new circuit. We keep track because the timeout is longer if we've
char *dest_address;
int session_group;
unsigned nym_epoch;
- /* XXXX023 do auth once #1666 is merged */
+ char *socks_username;
+ char *socks_password;
/**@}*/
} origin_circuit_t;