[ScryMUD] SVN Commit Info r899 - trunk/mud/grrmud/server
scrymud at wanfear.com
scrymud at wanfear.com
Mon Feb 26 14:00:42 PST 2007
Author: eroper
Date: 2007-02-26 14:00:41 -0800 (Mon, 26 Feb 2007)
New Revision: 899
Modified:
trunk/mud/grrmud/server/hegemon_handler.cc
trunk/mud/grrmud/server/hegemon_handler.h
trunk/mud/grrmud/server/login.cc
trunk/mud/grrmud/server/telnet_handler.cc
trunk/mud/grrmud/server/telnet_handler.h
Log:
Fixed an order-of-operations issue in login.cc which was causing runaway
HegemonHandler's.
Destructor definitions for {Hegemon,Telnet}Handler are now in their
respective .cc files.
We now properly say no when confronted with telnet linemode (rfc-1184) which
is not the same thing as kludge-linemode.
"There is an understanding known as kludge line mode which means that if
either "suppress go ahead" or "echo" is enabled but not both then telnet
operates in line at a time mode meaning that complete lines are assembled at
each end and transmitted in one "go"."
Reference:
"The Telnet Protocol" - Peter Burden
http://www.scit.wlv.ac.uk/~jphb/comms/telnet.html (02/26/2007)
Modified: trunk/mud/grrmud/server/hegemon_handler.cc
===================================================================
--- trunk/mud/grrmud/server/hegemon_handler.cc 2007-02-26 00:37:07 UTC (rev 898)
+++ trunk/mud/grrmud/server/hegemon_handler.cc 2007-02-26 22:00:41 UTC (rev 899)
@@ -33,6 +33,10 @@
}//HegemonHandler::HegemonHandler()
+HegemonHandler::~HegemonHandler() {
+ _cnt--;
+}//HegemonHandler::~HegemonHandler()
+
bool HegemonHandler::parse(const char* input_buf, size_t len) {
size_t i = 0;
const char* p;
Modified: trunk/mud/grrmud/server/hegemon_handler.h
===================================================================
--- trunk/mud/grrmud/server/hegemon_handler.h 2007-02-26 00:37:07 UTC (rev 898)
+++ trunk/mud/grrmud/server/hegemon_handler.h 2007-02-26 22:00:41 UTC (rev 899)
@@ -42,7 +42,7 @@
static int getInstanceCount() { return _cnt; }
HegemonHandler(critter *c_ptr);
- ~HegemonHandler() { _cnt--; };
+ ~HegemonHandler();
void newCritter(critter* c_ptr) { my_critter = c_ptr; };
Modified: trunk/mud/grrmud/server/login.cc
===================================================================
--- trunk/mud/grrmud/server/login.cc 2007-02-26 00:37:07 UTC (rev 898)
+++ trunk/mud/grrmud/server/login.cc 2007-02-26 22:00:41 UTC (rev 899)
@@ -463,12 +463,16 @@
setNoClient(); //turn off by default
+
+ //This has to be restored before calling using_client() so we
+ //don't allow protocol handlers to go runaway.
+ pc->p_handler = tmp_p_handler;
+
if (using_hegemon) {
using_client(*this);
setClient(HEGEMON);
}
- pc->p_handler = tmp_p_handler;
pc->descriptor = tmp_int;
pc->host = tmp_host;
pc->index = tmp_index;
Modified: trunk/mud/grrmud/server/telnet_handler.cc
===================================================================
--- trunk/mud/grrmud/server/telnet_handler.cc 2007-02-26 00:37:07 UTC (rev 898)
+++ trunk/mud/grrmud/server/telnet_handler.cc 2007-02-26 22:00:41 UTC (rev 899)
@@ -62,6 +62,10 @@
}//Constructor: TelnetHandler
+TelnetHandler::~TelnetHandler() {
+ _cnt--;
+}//TelnetHandler::~TelnetHandler()
+
void TelnetHandler::send(int action, int option) {
char msg[4];
@@ -202,10 +206,10 @@
send(ttype_req_str);
break;
+ //we don't support real linemode yet (RFC-1184) It's mentioned
+ //explicitly here because this isn't the same thing as the original
+ //kludge-linemode.
case TELOPT_LINEMODE:
- allow_do = true;
- break;
-
default:
allow_do = false;
break;
Modified: trunk/mud/grrmud/server/telnet_handler.h
===================================================================
--- trunk/mud/grrmud/server/telnet_handler.h 2007-02-26 00:37:07 UTC (rev 898)
+++ trunk/mud/grrmud/server/telnet_handler.h 2007-02-26 22:00:41 UTC (rev 899)
@@ -70,7 +70,7 @@
static int getInstanceCount() { return _cnt; }
TelnetHandler(critter* c_ptr);
- ~TelnetHandler() { _cnt--; };
+ ~TelnetHandler();
void newCritter(critter* c_ptr);
bool parse(const char* input_buf, size_t len);
More information about the ScryMUD
mailing list