diff --git a/src/sexpots/sexpots.c b/src/sexpots/sexpots.c
index 035bea6f93553167208c41ca7e57e6cb74427a1e..f396bcc6e4c001cde23bce9beb12b2022664e2fd 100644
--- a/src/sexpots/sexpots.c
+++ b/src/sexpots/sexpots.c
@@ -1392,8 +1392,10 @@ void parse_tcp_section(const char* section)
 	telnet					= iniGetBool(ini,section,"Telnet", telnet);
 }
 
-void parse_com_section(const char* section)
+BOOL parse_com_section(const char* section)
 {
+	if(!iniSectionExists(ini, section))
+		return FALSE;
 	iniGetExistingWord(ini, section, "Device", NULL, com_dev);
 	com_baudrate    = iniGetLongInt(ini, section, "BaudRate", com_baudrate);
 	com_parity		= iniGetBool(ini, section, "Parity", com_parity);
@@ -1406,6 +1408,7 @@ void parse_com_section(const char* section)
 	dcd_ignore      = iniGetBool(ini, section, "IgnoreDCD", dcd_ignore);
 	dtr_delay		= iniGetLongInt(ini, section, "DTRDelay", dtr_delay);
 	mdm_null	    = iniGetBool(ini, section, "NullModem", mdm_null);
+	return TRUE;
 }
 
 void parse_ini_file(const char* ini_fname)
@@ -1643,11 +1646,11 @@ service_loop(int argc, char** argv)
 					SAFEPRINTF(str, "TCP:%c", ch);
 					parse_tcp_section(str);
 					SAFEPRINTF(str, "COM:%c", ch);
-					parse_com_section(str);
+					if(parse_com_section(str))
+						com_setup();
 				}
 			} else
 				lprintf(LOG_NOTICE, "Timeout (%d seconds) waiting for response to prompt", prompt_timeout);
-			com_setup();
 		}
 		if((sock=connect_socket(host, port)) == INVALID_SOCKET) {
 			comWriteString(com_handle,"\7\r\n!ERROR connecting to TCP port\r\n");