diff --git a/src/syncterm/modem.c b/src/syncterm/modem.c index 1a6eb56eda6c63be32766894b2f77ecba8352c36..f716dea04aba67f4e749c55bbeabcffb209cafea 100644 --- a/src/syncterm/modem.c +++ b/src/syncterm/modem.c @@ -22,8 +22,13 @@ void modem_input_thread(void *args) int rd; int buffered; size_t buffer; + BOOL monitor_dsr=TRUE; conn_api.input_thread_running=1; + if(args != NULL) { + if((comGetModemStatus(com)&COM_DSR) == 0) + monitor_dsr=FALSE; + } while(com != COM_HANDLE_INVALID && !conn_api.terminate) { rd=comReadBuf(com, conn_api.rd_buf, conn_api.rd_buf_size, NULL, 100); buffered=0; @@ -37,7 +42,7 @@ void modem_input_thread(void *args) if((comGetModemStatus(com)&COM_DCD) == 0) break; } - else { + else if(monitor_dsr) { if((comGetModemStatus(com)&COM_DSR) == 0) break; } @@ -52,8 +57,13 @@ void modem_output_thread(void *args) int wr; int ret; int sent; + BOOL monitor_dsr=TRUE; conn_api.output_thread_running=1; + if(args != NULL) { + if((comGetModemStatus(com)&COM_DSR) == 0) + monitor_dsr=FALSE; + } while(com != COM_HANDLE_INVALID && !conn_api.terminate) { pthread_mutex_lock(&(conn_outbuf.mutex)); wr=conn_buf_wait_bytes(&conn_outbuf, 1, 100); @@ -76,7 +86,7 @@ void modem_output_thread(void *args) if((comGetModemStatus(com)&COM_DCD) == 0) break; } - else { + else if(monitor_dsr) { if((comGetModemStatus(com)&COM_DSR) == 0) break; }