As what Carson said.
We often have issues with firewalls/VPN’s not sending the disconnect notification after a timeout. Its due to different TTL’s being used and packets being dropped.
Since cloverleaf does not have the option to disconnect a client after not receiving a message for a period of time, the use of a multi server is the easiest method.
If there should only be one connection, its a good idea to have a tclproc on the ib TPS that checks the client_list global variable for connections and send a PROTO message to close the other connections.
This closes off the now defunct connections when the first message is recieved.
You can leave them and they will eventually get cleaned up (depending on the TTL settings), but if it occurs too often it can cause all of the available ports to be used up.
Below is some sample code to grab the defunct connections and close off the connections.
You’ll need multi server and “Use DRIVERCTL control” enabled.
global client_list
.
.
.
set myReturn “CONTINUE $aMsgId”
set myConnId “”
set myDriverCtrl [msgmetaget $aMsgId DRIVERCTL]
keylget myDriverCtrl CONNID myConnId
set myCloseList [lsearch -inline -all -not -exact $client_list $myConnId]
foreach myClient $myCloseList {
set myMsgId [msgcreate]
set myDriverCtl {}
keylset myDriverCtl CLOSE 1
keylset myDriverCtl WRITEZERO 0
keylset myDriverCtl CONNID $myClient
msgmetaset $myMsgId DRIVERCTL $myDriverCtl
lappend myReturn “PROTO $myMsgId”
}
[/code]