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