Commit 7487a937 authored by Eric's avatar Eric

[update] fix bugs

parent ac7356eb
...@@ -17,7 +17,7 @@ windows: ...@@ -17,7 +17,7 @@ windows:
@echo "编译windows" @echo "编译windows"
mkdir -p $(BASEPATH)/../build mkdir -p $(BASEPATH)/../build
GOOS=windows GOARCH=amd64 go build -o $(BASEPATH)/$(SOFTWARENAME)-windows-amd64 $(COCOSRCFILE) GOOS=windows GOARCH=amd64 go build -o $(BASEPATH)/$(SOFTWARENAME)-windows-amd64 $(COCOSRCFILE)
tar czvf $(BASEPATH)/../build/$(SOFTWARENAME)-windows-amd64.tar.gz $(BASEPATH)/build/$(SOFTWARENAME)-windows-amd64 $(BASEPATH)/cmd/locale $(BASEPATH)/cmd/config_example.yml tar czvf $(BASEPATH)/../build/$(SOFTWARENAME)-windows-amd64.tar.gz $(SOFTWARENAME)-windows-amd64 locale/ config_example.yml
.PHONY: linux .PHONY: linux
linux: linux:
...@@ -30,8 +30,8 @@ linux: ...@@ -30,8 +30,8 @@ linux:
darwin: darwin:
@echo "编译darwin" @echo "编译darwin"
mkdir -p $(BASEPATH)/../build mkdir -p $(BASEPATH)/../build
GOOS=darwin GOARCH=amd64 go build -o $(BASEPATH)/build/$(SOFTWARENAME)-darwin-amd64 $(COCOSRCFILE) GOOS=darwin GOARCH=amd64 go build -o $(BASEPATH)/$(SOFTWARENAME)-darwin-amd64 $(COCOSRCFILE)
tar czvf $(BASEPATH)/../build/$(SOFTWARENAME)-darwin-amd64.tar.gz $(SOFTWARENAME)-darwin-amd64 locale/ $(BASEPATH)/cmd/config_example.yml tar czvf $(BASEPATH)/../build/$(SOFTWARENAME)-darwin-amd64.tar.gz $(SOFTWARENAME)-darwin-amd64 locale/ config_example.yml
.PHONY: clean .PHONY: clean
clean: clean:
......
...@@ -82,6 +82,8 @@ func (p *Parser) initial() { ...@@ -82,6 +82,8 @@ func (p *Parser) initial() {
func (p *Parser) Parse() { func (p *Parser) Parse() {
defer func() { defer func() {
close(p.userOutputChan)
close(p.srvOutputChan)
logger.Debug("Parser parse routine done") logger.Debug("Parser parse routine done")
}() }()
for { for {
...@@ -256,8 +258,6 @@ func (p *Parser) Close() { ...@@ -256,8 +258,6 @@ func (p *Parser) Close() {
} }
close(p.userInputChan) close(p.userInputChan)
close(p.userOutputChan)
close(p.srvInputChan) close(p.srvInputChan)
close(p.srvOutputChan)
close(p.cmdRecordChan) close(p.cmdRecordChan)
} }
...@@ -106,11 +106,11 @@ func (s *SwitchSession) generateCommandResult(command [2]string) *model.Command ...@@ -106,11 +106,11 @@ func (s *SwitchSession) generateCommandResult(command [2]string) *model.Command
func (s *SwitchSession) postBridge() { func (s *SwitchSession) postBridge() {
s.DateEnd = time.Now().UTC().Format("2006-01-02 15:04:05 +0000") s.DateEnd = time.Now().UTC().Format("2006-01-02 15:04:05 +0000")
s.finished = true s.finished = true
_ = s.userTran.Close()
_ = s.srvTran.Close()
s.parser.Close() s.parser.Close()
s.replayRecorder.End() s.replayRecorder.End()
s.cmdRecorder.End() s.cmdRecorder.End()
_ = s.userTran.Close()
_ = s.srvTran.Close()
} }
func (s *SwitchSession) SetFilterRules(cmdRules []model.SystemUserFilterRule) { func (s *SwitchSession) SetFilterRules(cmdRules []model.SystemUserFilterRule) {
...@@ -154,14 +154,14 @@ func (s *SwitchSession) Bridge(userConn UserConnection, srvConn ServerConnection ...@@ -154,14 +154,14 @@ func (s *SwitchSession) Bridge(userConn UserConnection, srvConn ServerConnection
} }
s.parser.srvInputChan <- p s.parser.srvInputChan <- p
// Server流入parser数据,经处理发给用户 // Server流入parser数据,经处理发给用户
case p := <-s.parser.srvOutputChan: case p, ok := <-s.parser.srvOutputChan:
nw, err := s.userTran.Write(p) if !ok {
return
}
nw, _ := s.userTran.Write(p)
if !s.parser.IsRecvState() { if !s.parser.IsRecvState() {
s.replayRecorder.Record(p[:nw]) s.replayRecorder.Record(p[:nw])
} }
if err != nil {
return err
}
// User发来的数据流流入parser // User发来的数据流流入parser
case p, ok := <-s.userTran.Chan(): case p, ok := <-s.userTran.Chan():
if !ok { if !ok {
...@@ -169,11 +169,11 @@ func (s *SwitchSession) Bridge(userConn UserConnection, srvConn ServerConnection ...@@ -169,11 +169,11 @@ func (s *SwitchSession) Bridge(userConn UserConnection, srvConn ServerConnection
} }
s.parser.userInputChan <- p s.parser.userInputChan <- p
// User发来的数据经parser处理,发给Server // User发来的数据经parser处理,发给Server
case p := <-s.parser.userOutputChan: case p, ok := <-s.parser.userOutputChan:
_, err = s.srvTran.Write(p) if !ok {
if err != nil { return
return err
} }
_, err = s.srvTran.Write(p)
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment