[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] close immediately when write() fails too, else things will ...
- To: or-cvs@freehaven.net
- Subject: [or-cvs] close immediately when write() fails too, else things will ...
- From: arma@seul.org (Roger Dingledine)
- Date: Wed, 3 Mar 2004 02:26:36 -0500 (EST)
- Delivered-to: archiver@seul.org
- Delivered-to: or-cvs-outgoing@seul.org
- Delivered-to: or-cvs@seul.org
- Delivery-date: Wed, 03 Mar 2004 02:26:57 -0500
- Reply-to: or-dev@freehaven.net
- Sender: owner-or-cvs@freehaven.net
Update of /home/or/cvsroot/src/or
In directory moria.mit.edu:/home2/arma/work/onion/cvs/src/or
Modified Files:
connection.c
Log Message:
close immediately when write() fails too, else things will turn bad
Index: connection.c
===================================================================
RCS file: /home/or/cvsroot/src/or/connection.c,v
retrieving revision 1.172
retrieving revision 1.173
diff -u -d -r1.172 -r1.173
--- connection.c 3 Mar 2004 06:26:34 -0000 1.172
+++ connection.c 3 Mar 2004 07:26:34 -0000 1.173
@@ -568,7 +568,12 @@
conn->state != OR_CONN_STATE_CONNECTING) {
if (conn->state == OR_CONN_STATE_HANDSHAKING) {
connection_stop_writing(conn);
- return connection_tls_continue_handshake(conn);
+ if(connection_tls_continue_handshake(conn) < 0) {
+ connection_close_immediate(conn); /* Don't flush; connection is dead. */
+ connection_mark_for_close(conn, 0);
+ return -1;
+ }
+ return 0;
}
/* else open, or closing */
@@ -576,6 +581,7 @@
case TOR_TLS_ERROR:
case TOR_TLS_CLOSE:
log_fn(LOG_INFO,"tls error. breaking.");
+ connection_close_immediate(conn); /* Don't flush; connection is dead. */
connection_mark_for_close(conn, 0);
return -1; /* XXX deal with close better */
case TOR_TLS_WANTWRITE:
@@ -601,6 +607,7 @@
}
} else {
if (flush_buf(conn->s, conn->outbuf, &conn->outbuf_flushlen) < 0) {
+ connection_close_immediate(conn); /* Don't flush; connection is dead. */
connection_mark_for_close(conn, END_STREAM_REASON_MISC);
return -1;
}