mirror of https://gogs.blitter.com/RLabs/xs
KeepAlive WIP. TODO: check exitStatus logic for shell 'exit' clean exit
This commit is contained in:
parent
d0f8751b2b
commit
9244cc9785
3
xs/xs.go
3
xs/xs.go
|
@ -1005,7 +1005,7 @@ func main() { //nolint: funlen, gocyclo
|
|||
loginTimeout := time.AfterFunc(30*time.Second, func() { //nolint:gomnd
|
||||
restoreTermState(oldState)
|
||||
fmt.Printf(" .. [login timeout]\n")
|
||||
exitWithStatus(xsnet.CSOLoginTimeout)
|
||||
exitWithStatus(xsnet.CSELoginTimeout)
|
||||
})
|
||||
|
||||
if authCookie == "" {
|
||||
|
@ -1152,5 +1152,6 @@ func exitWithStatus(status int) {
|
|||
}
|
||||
}
|
||||
|
||||
fmt.Printf("[exitStatus:%d]\n", status)
|
||||
os.Exit(status)
|
||||
}
|
||||
|
|
|
@ -53,6 +53,7 @@ const (
|
|||
CSECipherAlgDenied // server rejected proposed Cipher alg
|
||||
CSEHMACAlgDenied // server rejected proposed HMAC alg
|
||||
CSEConnDead // connection keepalives expired
|
||||
CSELoginTimeout
|
||||
)
|
||||
|
||||
// Extended (>255 UNIX exit status) codes
|
||||
|
@ -68,9 +69,6 @@ const (
|
|||
CSOExitStatus // Remote cmd exit status
|
||||
CSOChaff // Dummy packet, do not pass beyond decryption
|
||||
|
||||
// Client side errors
|
||||
CSOLoginTimeout
|
||||
|
||||
// Tunnel setup/control/status
|
||||
CSOTunSetup // client -> server tunnel setup request (dstport)
|
||||
CSOTunSetupAck // server -> client tunnel setup ack
|
||||
|
|
13
xsnet/net.go
13
xsnet/net.go
|
@ -1196,7 +1196,7 @@ func (hl *HKExListener) Accept() (hc Conn, err error) {
|
|||
// packet processing.
|
||||
//
|
||||
// See go doc io.Reader
|
||||
func (hc Conn) Read(b []byte) (n int, err error) {
|
||||
func (hc *Conn) Read(b []byte) (n int, err error) {
|
||||
for {
|
||||
if hc.dBuf.Len() > 0 {
|
||||
break
|
||||
|
@ -1214,7 +1214,8 @@ func (hc Conn) Read(b []byte) (n int, err error) {
|
|||
return 0, io.EOF
|
||||
}
|
||||
if strings.HasSuffix(err.Error(), "use of closed network connection") {
|
||||
logger.LogDebug(fmt.Sprintln("[Client hung up]"))
|
||||
logger.LogDebug(fmt.Sprintln("[Client hung up(1)]"))
|
||||
//!rlm hc.SetStatus(CSENone) //FIXME: re-examine this (exit 9 w/o it - 2023-11-05)
|
||||
return 0, io.EOF
|
||||
}
|
||||
etxt := fmt.Sprintf("** Failed read:%s (%s) **", "ctrlStatOp", err)
|
||||
|
@ -1237,7 +1238,7 @@ func (hc Conn) Read(b []byte) (n int, err error) {
|
|||
return 0, io.EOF
|
||||
}
|
||||
if strings.HasSuffix(err.Error(), "use of closed network connection") {
|
||||
logger.LogDebug(fmt.Sprintln("[Client hung up]"))
|
||||
logger.LogDebug(fmt.Sprintln("[Client hung up(2)]"))
|
||||
return 0, io.EOF
|
||||
}
|
||||
etxt := fmt.Sprintf("** Failed read:%s (%s) **", "HMAC", err)
|
||||
|
@ -1253,7 +1254,7 @@ func (hc Conn) Read(b []byte) (n int, err error) {
|
|||
return 0, io.EOF
|
||||
}
|
||||
if strings.HasSuffix(err.Error(), "use of closed network connection") {
|
||||
logger.LogDebug(fmt.Sprintln("[Client hung up]"))
|
||||
logger.LogDebug(fmt.Sprintln("[Client hung up(3)]"))
|
||||
return 0, io.EOF
|
||||
}
|
||||
etxt := fmt.Sprintf("** Failed read:%s (%s) **", "payloadLen", err)
|
||||
|
@ -1276,7 +1277,7 @@ func (hc Conn) Read(b []byte) (n int, err error) {
|
|||
return 0, io.EOF
|
||||
}
|
||||
if strings.HasSuffix(err.Error(), "use of closed network connection") {
|
||||
logger.LogDebug(fmt.Sprintln("[Client hung up]"))
|
||||
logger.LogDebug(fmt.Sprintln("[Client hung up(4)]"))
|
||||
return 0, io.EOF
|
||||
}
|
||||
etxt := fmt.Sprintf("** Failed read:%s (%s) **", "payloadBytes", err)
|
||||
|
@ -1647,7 +1648,7 @@ func (hc *Conn) keepaliveHelper() {
|
|||
}
|
||||
time.Sleep(time.Duration(nextDuration) * time.Millisecond)
|
||||
hc.keepalive -= 1
|
||||
|
||||
logger.LogDebug(fmt.Sprintf("[keepAlive is now %d]\n", hc.keepalive))
|
||||
//if rand.Intn(32) == 0 {
|
||||
// hc.keepalive = 0
|
||||
//}
|
||||
|
|
Loading…
Reference in New Issue