Use timers when connecting and disconnecting, so failures don't result in long hangs.
This commit is contained in:
parent
7dd2be9ae2
commit
6c6dff0e18
|
@ -4,6 +4,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <AppleTalk.h>
|
#include <AppleTalk.h>
|
||||||
#include <orca.h>
|
#include <orca.h>
|
||||||
|
#include <misctool.h>
|
||||||
#include "atipmapping.h"
|
#include "atipmapping.h"
|
||||||
#include "session.h"
|
#include "session.h"
|
||||||
|
|
||||||
|
@ -17,6 +18,7 @@ BOOLEAN StartTCPConnection(Session *sess) {
|
||||||
Word tcperr;
|
Word tcperr;
|
||||||
ASPOpenSessionRec *commandRec;
|
ASPOpenSessionRec *commandRec;
|
||||||
srBuff mySRBuff;
|
srBuff mySRBuff;
|
||||||
|
LongWord initialTime;
|
||||||
|
|
||||||
commandRec = (ASPOpenSessionRec *)sess->spCommandRec;
|
commandRec = (ASPOpenSessionRec *)sess->spCommandRec;
|
||||||
|
|
||||||
|
@ -56,10 +58,11 @@ BOOLEAN StartTCPConnection(Session *sess) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initialTime = GetTick();
|
||||||
do {
|
do {
|
||||||
TCPIPPoll();
|
TCPIPPoll();
|
||||||
TCPIPStatusTCP(sess->ipid, &mySRBuff);
|
TCPIPStatusTCP(sess->ipid, &mySRBuff);
|
||||||
} while (mySRBuff.srState == TCPSSYNSENT);
|
} while (mySRBuff.srState == TCPSSYNSENT && GetTick()-initialTime < 15*60);
|
||||||
if (mySRBuff.srState != TCPSESTABLISHED) {
|
if (mySRBuff.srState != TCPSESTABLISHED) {
|
||||||
TCPIPAbortTCP(sess->ipid);
|
TCPIPAbortTCP(sess->ipid);
|
||||||
TCPIPLogout(sess->ipid);
|
TCPIPLogout(sess->ipid);
|
||||||
|
@ -73,14 +76,17 @@ BOOLEAN StartTCPConnection(Session *sess) {
|
||||||
|
|
||||||
void EndTCPConnection(Session *sess) {
|
void EndTCPConnection(Session *sess) {
|
||||||
srBuff mySRBuff;
|
srBuff mySRBuff;
|
||||||
|
LongWord initialTime;
|
||||||
|
|
||||||
if (sess->tcpLoggedIn) {
|
if (sess->tcpLoggedIn) {
|
||||||
|
initialTime = GetTick();
|
||||||
do {
|
do {
|
||||||
TCPIPPoll();
|
TCPIPPoll();
|
||||||
} while (TCPIPStatusTCP(sess->ipid, &mySRBuff) == tcperrOK
|
} while (TCPIPStatusTCP(sess->ipid, &mySRBuff) == tcperrOK
|
||||||
&& !toolerror()
|
&& !toolerror()
|
||||||
&& mySRBuff.srState == TCPSESTABLISHED
|
&& mySRBuff.srState == TCPSESTABLISHED
|
||||||
&& mySRBuff.srSndQueued > 0);
|
&& mySRBuff.srSndQueued > 0
|
||||||
|
&& GetTick()-initialTime < 15*60);
|
||||||
|
|
||||||
TCPIPAbortTCP(sess->ipid);
|
TCPIPAbortTCP(sess->ipid);
|
||||||
TCPIPLogout(sess->ipid);
|
TCPIPLogout(sess->ipid);
|
||||||
|
|
Loading…
Reference in New Issue