fix disconnect

This commit is contained in:
Kelvin Sherlock 2019-07-08 22:21:09 -04:00
parent 6941ead69b
commit 4f396d603d
1 changed files with 8 additions and 3 deletions

11
nda.c
View File

@ -191,16 +191,16 @@ void TCPLoop(void) {
x = ConnectionPoll(&connection); x = ConnectionPoll(&connection);
switch (connection.state) { switch (connection.state) {
case kConnectionStateConnected: case kConnectionStateConnected:
MarinettiCallback("\pConnected."); MarinettiCallback("\pConnected");
++st; ++st;
break; break;
case kConnectionStateDisconnected: case kConnectionStateDisconnected:
MarinettiCallback("\pDisconnected."); MarinettiCallback("\pDisconnected");
EnableControls(); EnableControls();
st = st_none; st = st_none;
break; break;
case kConnectionStateError: case kConnectionStateError:
MarinettiCallback("\pConnection Error."); MarinettiCallback("\pConnection Error");
EnableControls(); EnableControls();
st = st_none; st = st_none;
break; break;
@ -211,6 +211,7 @@ void TCPLoop(void) {
switch (connection.state) { switch (connection.state) {
case kConnectionStateDisconnected: case kConnectionStateDisconnected:
case kConnectionStateError: case kConnectionStateError:
MarinettiCallback("\pDisconnected");
EnableControls(); EnableControls();
st = st_none; st = st_none;
break; break;
@ -231,6 +232,9 @@ redo:
if (sr.srRcvQueued == 0) { if (sr.srRcvQueued == 0) {
if (GetTick() >= qtick) { if (GetTick() >= qtick) {
/* timeout */ /* timeout */
MarinettiCallback("\pTimed out");
ConnectionClose(&connection);
st = st_disconnect;
} }
return; return;
} }
@ -238,6 +242,7 @@ redo:
terr = TCPIPReadLineTCP(ipid, "\p\n", 0x0000, (Ref)&buffer, terr = TCPIPReadLineTCP(ipid, "\p\n", 0x0000, (Ref)&buffer,
sizeof(buffer) - 2, &rlr); sizeof(buffer) - 2, &rlr);
if (terr == tcperrConClosing) terr = 0;
if (terr) return; if (terr) return;
if (!rlr.rlrIsDataFlag) if (!rlr.rlrIsDataFlag)
return; return;