From 98a254d53d46baf779ddee04714783e964b26bf4 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 7 Feb 2003 06:46:30 +0000
Subject: [PATCH] Added BBS option to enable/disable the sending of Telnet
 Go-ahead commands (defaults to 'off', previously always-on).

---
 ctrl/sbbs.ini                       |  2 +-
 src/sbbs3/ctrl/TelnetCfgDlgUnit.cpp | 10 +++++-----
 src/sbbs3/ctrl/TelnetCfgDlgUnit.dfm | 10 ++++++----
 src/sbbs3/ctrl/TelnetCfgDlgUnit.h   |  2 +-
 src/sbbs3/getkey.cpp                |  3 ++-
 src/sbbs3/sbbs_ini.c                |  1 +
 src/sbbs3/startup.h                 |  1 +
 src/sbbs3/xtrn.cpp                  |  3 ++-
 8 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/ctrl/sbbs.ini b/ctrl/sbbs.ini
index b3e1c7fc1e..07d6814318 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 9726d266ed..560ca5f106 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 4ab70d20bc..d1acc1c3b0 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 c15c246ede..571f311235 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 f7c0aabab9..e3fbe719f3 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 4ef41e487f..bcfd8ca342 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 11468debab..ec384d3df1 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 3392330817..0bb8c0dad3 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);
-- 
GitLab