diff --git a/src/syncterm/rlogin.c b/src/syncterm/rlogin.c
index 92c60f8e2239b8e1b1e8d9a80f9a6d23ab70e494..1b7e71bafa51cbc6e4db9c4bd16b86af3b756ca3 100644
--- a/src/syncterm/rlogin.c
+++ b/src/syncterm/rlogin.c
@@ -49,7 +49,7 @@ void rlogin_input_thread(void *args)
 		buffered=0;
 		while(buffered < rd) {
 			pthread_mutex_lock(&(conn_inbuf.mutex));
-			buffer=conn_buf_wait_free(&conn_inbuf, rd-buffered, 100);
+			buffer=conn_buf_wait_free(&conn_inbuf, rd-buffered, 1000);
 			buffered+=conn_buf_put(&conn_inbuf, conn_api.rd_buf+buffered, buffer);
 			pthread_mutex_unlock(&(conn_inbuf.mutex));
 		}
diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index 07b1a32dd8b0545c30ae31d7c02ea9eee259d798..a6c5aa4d01913234c98d9bfefe1e5b8d536f6c21 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -455,12 +455,14 @@ static int send_byte(void* unused, uchar ch, unsigned timeout /* seconds */)
 #if defined(__BORLANDC__)
 	#pragma argsused
 #endif
-BYTE	recv_byte_buffer[BUFFER_SIZE/2];
+BYTE	recv_byte_buffer[BUFFER_SIZE];
 unsigned recv_byte_buffer_len=0;
 unsigned recv_byte_buffer_pos=0;
 
 static int recv_byte(void* unused, unsigned timeout /* seconds */)
 {
+	BYTE ch;
+
 	if(recv_byte_buffer_len == 0)
 		recv_byte_buffer_len=conn_recv_upto(recv_byte_buffer, sizeof(recv_byte_buffer), timeout*1000);
 
@@ -740,6 +742,8 @@ void begin_download(struct bbslist *bbs)
 #endif
 static BOOL is_connected(void* unused)
 {
+	if(recv_byte_buffer_len)
+		return TRUE;
 	return(conn_connected());
 }
 
@@ -2156,7 +2160,7 @@ BOOL doterm(struct bbslist *bbs)
 		sleep=TRUE;
 		if(!term.nostatus)
 			update_status(bbs, (bbs->conn_type == CONN_TYPE_SERIAL)?bbs->bpsrate:speed, ooii_mode);
-		for(remain=data_waiting(NULL, 0) /* Hack for connection check */ + (!conn_connected()); remain; remain--) {
+		for(remain=data_waiting(NULL, 0) /* Hack for connection check */ + (!is_connected(NULL)); remain; remain--) {
 			if(speed)
 				thischar=xp_timer();
 
@@ -2166,7 +2170,7 @@ BOOL doterm(struct bbslist *bbs)
 
 				switch(inch) {
 					case -1:
-						if(!conn_connected()) {
+						if(!is_connected(NULL)) {
 							WRITE_OUTBUF();
 							hold_update=oldmc;
 #ifdef WITH_WXWIDGETS