let alice recognize a y.onion address and, uhm, do something

svn:r1422
This commit is contained in:
Roger Dingledine 2004-04-01 02:41:41 +00:00
parent d13857a3f0
commit 36ff23209b
3 changed files with 35 additions and 3 deletions

View File

@ -696,6 +696,7 @@ static void connection_edge_consider_sending_sendme(connection_t *conn) {
}
}
/* return -1 if an unexpected error with conn, else 0. */
static int connection_ap_handshake_process_socks(connection_t *conn) {
socks_request_t *socks;
int sockshere;
@ -724,9 +725,27 @@ static int connection_ap_handshake_process_socks(connection_t *conn) {
return sockshere;
} /* else socks handshake is done, continue processing */
conn->state = AP_CONN_STATE_CIRCUIT_WAIT;
/* attaching to a dirty circuit is fine */
return connection_ap_handshake_attach_circuit(conn,0);
/* this call _modifies_ socks->address iff it's a hidden-service request */
if (rend_parse_rendezvous_address(socks->address) < 0) {
/* normal request */
conn->state = AP_CONN_STATE_CIRCUIT_WAIT;
/* attaching to a dirty circuit is fine */
return connection_ap_handshake_attach_circuit(conn,0);
} else {
/* it's a hidden-service request */
const char *descp;
int desc_len;
/* see if we already have it cached */
if (rend_cache_lookup(socks->address, &descp, &desc_len) == 1) {
/* then pick and launch a rendezvous circuit */
/* go into some other state */
} else {
/* initiate a dir hidserv desc lookup */
/* go into a state where you'll be notified of the answer */
}
}
return 0;
}
static int connection_ap_handshake_attach_circuit(connection_t *conn,

View File

@ -1012,6 +1012,8 @@ void rend_cache_clean(void);
int rend_cache_lookup(char *query, const char **desc, int *desc_len);
int rend_cache_store(char *desc, int desc_len);
int rend_parse_rendezvous_address(char *address);
/********************************* rendservice.c ***************************/
int rend_config_services(or_options_t *options);

View File

@ -244,4 +244,15 @@ int rend_cache_store(char *desc, int desc_len)
return 0;
}
/* ==== General utility functions for rendezvous. */
/* If address is of the form "y.onion" with a well-formed handle y,
* then put a '\0' after y and return 0.
* Else return -1 and change nothing.
*/
int rend_parse_rendezvous_address(char *address) {
return -1;
}