diff --git a/src/syncterm/modem.c b/src/syncterm/modem.c
index 1b9c88bab16d6bd1cd286185d3cd1fa2d3176607..8ca6eec451c6a13276c0bb036e6623f6715bde58 100644
--- a/src/syncterm/modem.c
+++ b/src/syncterm/modem.c
@@ -180,6 +180,14 @@ modem_connect(struct bbslist *bbs)
 			comClose(com);
 			return -1;
 		}
+		if (!comSetFlowControl(com, bbs->flow_control)) {
+			conn_api.close();
+			if (!bbs->hidepopups) {
+				uifcmsg("Failed to set Flow Control", "`Failed to set Flow Control`\n\n"
+				    "SyncTERM was unable to set flow control.\n");
+			}
+			return -1;
+		}
 		if (bbs->conn_type == CONN_TYPE_SERIAL_NORTS)
 			comLowerRTS(com);
 		if (!comRaiseDTR(com)) {
@@ -225,6 +233,15 @@ modem_connect(struct bbslist *bbs)
 			comClose(com);
 			return -1;
 		}
+		if (!comSetFlowControl(com, bbs->flow_control)) {
+			conn_api.close();
+			if (!bbs->hidepopups) {
+				uifcmsg("Failed to set Flow Control", "`Failed to set Flow Control`\n\n"
+				    "SyncTERM was unable to set flow control.\n");
+			}
+			return -1;
+		}
+
 		if (!comRaiseDTR(com)) {
 			if (!bbs->hidepopups)
 				uifcmsg("Cannot Raise DTR", "`Cannot Raise DTR`\n\n"
@@ -320,15 +337,6 @@ modem_connect(struct bbslist *bbs)
 		}
 	}
 
-	if (!comSetFlowControl(com, bbs->flow_control)) {
-		conn_api.close();
-		if (!bbs->hidepopups) {
-			uifcmsg("Failed to set Flow Control", "`Failed to set Flow Control`\n\n"
-			    "SyncTERM was unable to set flow control.\n");
-		}
-		return -1;
-	}
-
 	if (!create_conn_buf(&conn_inbuf, BUFFER_SIZE)) {
 		conn_api.close();
 		return -1;