fix the stale pointer assert bug reported by joe magic

svn:r2436
This commit is contained in:
Roger Dingledine 2004-10-11 01:17:42 +00:00
parent 6468e049be
commit 7798e3d770
3 changed files with 7 additions and 2 deletions

View File

@ -633,8 +633,8 @@ int circuit_finish_handshake(circuit_t *circ, char *reply) {
* just give up: for circ to close, and return 0.
*/
int circuit_truncated(circuit_t *circ, crypt_path_t *layer) {
crypt_path_t *victim;
connection_t *stream;
// crypt_path_t *victim;
// connection_t *stream;
tor_assert(circ && CIRCUIT_IS_ORIGIN(circ));
tor_assert(layer);
@ -646,6 +646,7 @@ int circuit_truncated(circuit_t *circ, crypt_path_t *layer) {
circuit_mark_for_close(circ);
return 0;
#if 0
while(layer->next != circ->cpath) {
/* we need to clear out layer->next */
victim = layer->next;
@ -668,6 +669,7 @@ int circuit_truncated(circuit_t *circ, crypt_path_t *layer) {
log_fn(LOG_INFO, "finished");
return 0;
#endif
}
/** Decide whether the first bit of the circuit ID will be

View File

@ -411,6 +411,7 @@ void assert_cpath_layer_ok(const crypt_path_t *cp)
tor_assert(cp->handshake_state);
break;
default:
log_fn(LOG_WARN,"Unexpected state %d",cp->state);
tor_assert(0);
}
tor_assert(cp->package_window >= 0);

View File

@ -333,6 +333,8 @@ void circuit_detach_stream(circuit_t *circ, connection_t *conn) {
tor_assert(circ && conn);
conn->cpath_layer = NULL; /* make sure we don't keep a stale pointer */
if(conn == circ->p_streams) {
circ->p_streams = conn->next_stream;
return;