From 23a06c6a527958f7686a59ae2f095653f5beeade Mon Sep 17 00:00:00 2001 From: Qian Wang Date: Sun, 30 Dec 2018 01:15:46 +0000 Subject: [PATCH] Clarify the code to enter admin mode --- cmd/ck-client/ck-client.go | 30 +++++++++++++++--------------- internal/multiplex/switchboard.go | 1 + 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/cmd/ck-client/ck-client.go b/cmd/ck-client/ck-client.go index 3c33311..e0e2d70 100644 --- a/cmd/ck-client/ck-client.go +++ b/cmd/ck-client/ck-client.go @@ -124,18 +124,25 @@ func main() { return } - log.Printf("Starting standalone mode. Listening for ss on %v:%v\n", localHost, localPort) + log.Println("Starting standalone mode") } + if *isAdmin { + sta := client.InitState("", "", "", "", time.Now, 0) + err := sta.ParseConfig(pluginOpts) + if err != nil { + log.Fatal(err) + } + err = adminPrompt(sta) + if err != nil { + log.Println(err) + } + return + } // sessionID is usergenerated. There shouldn't be a security concern because the scope of // sessionID is limited to its UID. rand.Seed(time.Now().UnixNano()) - var sessionID uint32 - if *isAdmin { - sessionID = 0 - } else { - sessionID = rand.Uint32() - } + sessionID := rand.Uint32() // opaque is used to generate the padding of session ticket sta := client.InitState(localHost, localPort, remoteHost, remotePort, time.Now, sessionID) @@ -144,14 +151,6 @@ func main() { log.Fatal(err) } - if *isAdmin { - err = adminPrompt(sta) - if err != nil { - log.Println(err) - } - return - } - if sta.SS_LOCAL_PORT == "" { log.Fatal("Must specify localPort") } @@ -184,6 +183,7 @@ func main() { wg.Wait() listener, err := net.Listen("tcp", sta.SS_LOCAL_HOST+":"+sta.SS_LOCAL_PORT) + log.Println("Listening for ss on " + sta.SS_LOCAL_HOST + ":" + sta.SS_LOCAL_PORT) if err != nil { log.Fatal(err) } diff --git a/internal/multiplex/switchboard.go b/internal/multiplex/switchboard.go index 131cb51..5732dd4 100644 --- a/internal/multiplex/switchboard.go +++ b/internal/multiplex/switchboard.go @@ -128,6 +128,7 @@ func (sb *switchboard) removeConn(closing *connEnclave) { sb.cesM.Unlock() } +// actively triggered by session.Close() func (sb *switchboard) shutdown() { for _, ce := range sb.ces { ce.remoteConn.Close()