From 710669e7407919df68e93ff95145b7c40e5789af Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Mon, 21 Jan 2008 01:23:53 +0000
Subject: [PATCH] Only monitor DSR if it is asserted at the start.

---
 src/syncterm/modem.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/syncterm/modem.c b/src/syncterm/modem.c
index 1a6eb56eda..f716dea04a 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;
 		}
-- 
GitLab