| 
					
				 | 
			
			
				@@ -163,13 +163,17 @@ connection_cpu_process_inbuf(connection_t *conn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       circ = circuit_get_by_circid_orconn(circ_id, p_conn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (success == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      debug(LD_OR,"decoding onionskin failed. (Old key or bad sw.) Closing."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      debug(LD_OR,"decoding onionskin failed. (Old key or bad software.) Closing."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (circ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         circuit_mark_for_close(circ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       goto done_processing; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!circ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      /*XXXX Why does this happen?*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /* This happens because somebody sends us a destroy cell and the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * circuit goes away, while the cpuworker is working. This is also 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * why our tag doesn't include a pointer to the circ, because we'd 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       * never know if it's still valid. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       debug(LD_OR,"processed onion for a circ that's gone. Dropping."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       goto done_processing; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -259,7 +263,7 @@ cpuworker_main(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (read_all(fd, question, ONIONSKIN_CHALLENGE_LEN, 1) != ONIONSKIN_CHALLENGE_LEN) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      info(LD_BUG,"read question failed. Exiting."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      err(LD_BUG,"read question failed. Exiting."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       goto end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |