diff --git a/ctrl/sbbs.ini b/ctrl/sbbs.ini
index b3e1c7fc1e6a4082c5d4e2f777d2845cecb64535..07d681431843663485fc16b61065419479300ffe 100644
--- a/ctrl/sbbs.ini
+++ b/ctrl/sbbs.ini
@@ -21,7 +21,7 @@ ExternalYield=10
 AnswerSound=
 HangupSound=
 ; Supported options (separated with |):
-; 	KEEP_ALIVE
+; 	SEND_TELNET_GA
 ; 	XTRN_MINIMIZED
 ; 	AUTO_LOGON
 ; 	DEBUG_TELNET
diff --git a/src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp b/src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp
index 9726d266edfd42fbf53b43e9377f7e127b6c4a90..560ca5f106dd817e6f1b4568834169a8f318e4ba 100644
--- a/src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp
+++ b/src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp
@@ -6,7 +6,7 @@
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
  *																			*
- * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html		*
+ * Copyright 2003 Rob Swindell - http://www.synchro.net/copyright.html		*
  *																			*
  * This program is free software; you can redistribute it and/or			*
  * modify it under the terms of the GNU General Public License				*
@@ -88,7 +88,7 @@ void __fastcall TTelnetCfgDlg::FormShow(TObject *Sender)
     AnswerSoundEdit->Text=AnsiString(MainForm->bbs_startup.answer_sound);
     HangupSoundEdit->Text=AnsiString(MainForm->bbs_startup.hangup_sound);
     CmdLogCheckBox->Checked=MainForm->bbs_startup.options&BBS_OPT_DEBUG_TELNET;
-    KeepAliveCheckBox->Checked=MainForm->bbs_startup.options&BBS_OPT_KEEP_ALIVE;
+    TelnetGaCheckBox->Checked=MainForm->bbs_startup.options&BBS_OPT_SEND_TELNET_GA;
 	XtrnMinCheckBox->Checked=MainForm->bbs_startup.options&BBS_OPT_XTRN_MINIMIZED;
     AutoLogonCheckBox->Checked=MainForm->bbs_startup.options&BBS_OPT_AUTO_LOGON;
     HostnameCheckBox->Checked
@@ -164,10 +164,10 @@ void __fastcall TTelnetCfgDlg::OKBtnClick(TObject *Sender)
         ,AnswerSoundEdit->Text.c_str());
     SAFECOPY(MainForm->bbs_startup.hangup_sound
         ,HangupSoundEdit->Text.c_str());
-	if(KeepAliveCheckBox->Checked==true)
-    	MainForm->bbs_startup.options|=BBS_OPT_KEEP_ALIVE;
+	if(TelnetGaCheckBox->Checked==true)
+    	MainForm->bbs_startup.options|=BBS_OPT_SEND_TELNET_GA;
     else
-	    MainForm->bbs_startup.options&=~BBS_OPT_KEEP_ALIVE;
+	    MainForm->bbs_startup.options&=~BBS_OPT_SEND_TELNET_GA;
     if(XtrnMinCheckBox->Checked==true)
     	MainForm->bbs_startup.options|=BBS_OPT_XTRN_MINIMIZED;
     else
diff --git a/src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm b/src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm
index 4ab70d20bc7bd5319273f83c0fb4acada752566d..d1acc1c3b0fb577f89c915fff57076a6661e9a80 100644
--- a/src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm
+++ b/src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm
@@ -197,13 +197,15 @@ object TelnetCfgDlg: TTelnetCfgDlg
         ShowHint = True
         TabOrder = 0
       end
-      object KeepAliveCheckBox: TCheckBox
+      object TelnetGaCheckBox: TCheckBox
         Left = 9
         Top = 76
-        Width = 144
+        Width = 208
         Height = 26
-        Hint = 'Instruct WinSock to keep your dial-up connection active'
-        Caption = 'Send Keep-Alives'
+        Hint = 
+          'Send periodic Telnet GA commands to help detect dropped connecti' +
+          'ons.'
+        Caption = 'Send Telnet Go-Aheads'
         ParentShowHint = False
         ShowHint = True
         TabOrder = 2
diff --git a/src/sbbs3/ctrl/TelnetCfgDlgUnit.h b/src/sbbs3/ctrl/TelnetCfgDlgUnit.h
index c15c246ede85adcc99c913f21eacc3eb0b4f534b..571f311235653f2ddbb6eb2e566c30151ff0ec8d 100644
--- a/src/sbbs3/ctrl/TelnetCfgDlgUnit.h
+++ b/src/sbbs3/ctrl/TelnetCfgDlgUnit.h
@@ -79,7 +79,7 @@ __published:
     TEdit *TelnetInterfaceEdit;
     TLabel *TelnetPortLabel;
     TEdit *TelnetPortEdit;
-    TCheckBox *KeepAliveCheckBox;
+	TCheckBox *TelnetGaCheckBox;
     TCheckBox *AutoLogonCheckBox;
     TTabSheet *RLoginTabSheet;
     TLabel *RLoginPortLabel;
diff --git a/src/sbbs3/getkey.cpp b/src/sbbs3/getkey.cpp
index f7c0aabab97f3745ca33987fc86bf546a40e864f..e3fbe719f359f1c8c3ef1c82a29394842dc7f287 100644
--- a/src/sbbs3/getkey.cpp
+++ b/src/sbbs3/getkey.cpp
@@ -266,7 +266,8 @@ char sbbs_t::getkey(long mode)
 			RESTORELINE; 
 		}
 
-		if(now!=last_telnet_cmd && now-timeout>=60 && !((now-timeout)%60)) {
+		if(startup->options&BBS_OPT_SEND_TELNET_GA
+			&& now!=last_telnet_cmd && now-timeout>=60 && !((now-timeout)%60)) {
 			// Let's make sure the socket is up
 			// Sending will trigger a socket d/c detection
 			send_telnet_cmd(TELNET_GA,0);
diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c
index 4ef41e487f406bd0d5b271f686427399423ef83b..bcfd8ca34266a51d9c189ec84bf5416b219e1de8 100644
--- a/src/sbbs3/sbbs_ini.c
+++ b/src/sbbs3/sbbs_ini.c
@@ -49,6 +49,7 @@ static ini_bitdesc_t bbs_options[] = {
 	{ BBS_OPT_ALLOW_RLOGIN			,"ALLOW_RLOGIN"			},
 	{ BBS_OPT_USE_2ND_RLOGIN		,"USE_2ND_RLOGIN"		},
 	{ BBS_OPT_NO_QWK_EVENTS			,"NO_QWK_EVENTS"		},
+	{ BBS_OPT_SEND_TELNET_GA		,"SEND_TELNET_GA"		},
 	{ BBS_OPT_NO_HOST_LOOKUP		,"NO_HOST_LOOKUP"		},
 	{ BBS_OPT_NO_RECYCLE			,"NO_RECYCLE"			},
 	{ BBS_OPT_GET_IDENT				,"GET_IDENT"			},
diff --git a/src/sbbs3/startup.h b/src/sbbs3/startup.h
index 11468debabe647601b1f9068891e0453b7a6f9ef..ec384d3df1ce0f4b3ea39b3cee99472ba45e72ba 100644
--- a/src/sbbs3/startup.h
+++ b/src/sbbs3/startup.h
@@ -104,6 +104,7 @@ typedef struct {
 #define BBS_OPT_ALLOW_RLOGIN		(1<<5)	/* Allow logins via BSD RLogin		*/
 #define BBS_OPT_USE_2ND_RLOGIN		(1<<6)	/* Use 2nd username in BSD RLogin	*/
 #define BBS_OPT_NO_QWK_EVENTS		(1<<7)	/* Don't run QWK-related events		*/
+#define BBS_OPT_SEND_TELNET_GA		(1<<8)	/* Send periodic Telnet go-aheads	*/
 #define BBS_OPT_NO_HOST_LOOKUP		(1<<11)
 #define BBS_OPT_NO_RECYCLE			(1<<27)	/* Disable recycling of server		*/
 #define BBS_OPT_GET_IDENT			(1<<28)	/* Get Identity (RFC 1413)			*/
diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp
index 3392330817b6a28dd2d6d49a97a5e1d892902233..0bb8c0dad3ac2325b3c1470513fe8b3a31f43569 100644
--- a/src/sbbs3/xtrn.cpp
+++ b/src/sbbs3/xtrn.cpp
@@ -874,7 +874,8 @@ int sbbs_t::external(char* cmdline, long mode, char* startup_dir)
 
 						// Let's make sure the socket is up
 						// Sending will trigger a socket d/c detection
-						send_telnet_cmd(TELNET_GA,0);
+						if(startup->options&BBS_OPT_SEND_TELNET_GA)
+							send_telnet_cmd(TELNET_GA,0);
 
 						// Check if the node has been interrupted
 						getnodedat(cfg.node_num,&thisnode,0);