From 68806c7fb7ad070a78fbacc546611cee66471fd8 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Tue, 6 Jan 2009 19:03:15 +0000 Subject: When a relay gets a create cell it can't decrypt (e.g. because it's using the wrong onion key), we were dropping it and letting the client time out. Now actually answer with a destroy cell. Bugfix on 0.0.2pre8. svn:r17970 --- src/or/cpuworker.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index b0d3d1c4c0..88a72886eb 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -274,7 +274,10 @@ cpuworker_main(void *data) reply_to_proxy, keys, CPATH_KEY_MATERIAL_LEN) < 0) { /* failure */ log_debug(LD_OR,"onion_skin_server_handshake failed."); - memset(buf,0,LEN_ONION_RESPONSE); /* send all zeros for failure */ + *buf = 0; /* indicate failure in first byte */ + memcpy(buf+1,tag,TAG_LEN); + /* send all zeros as answer */ + memset(buf+1+TAG_LEN, 0, LEN_ONION_RESPONSE-(1+TAG_LEN)); } else { /* success */ log_debug(LD_OR,"onion_skin_server_handshake succeeded."); -- cgit v1.2.3-54-g00ecf