Commit 9db0ff5d authored by Eric's avatar Eric Committed by Eric_Lee

fix rz/sz reply record bugs

parent 957dfbb0
...@@ -164,13 +164,13 @@ func (p *Parser) ParseUserInput(b []byte) []byte { ...@@ -164,13 +164,13 @@ func (p *Parser) ParseUserInput(b []byte) []byte {
// parseZmodemState 解析数据,查看是不是处于zmodem状态 // parseZmodemState 解析数据,查看是不是处于zmodem状态
// 处于zmodem状态不会再解析命令 // 处于zmodem状态不会再解析命令
func (p *Parser) parseZmodemState(b []byte) { func (p *Parser) parseZmodemState(b []byte) {
if len(b) < 25 { if len(b) < 20 {
return return
} }
p.lock.Lock() p.lock.Lock()
defer p.lock.Unlock() defer p.lock.Unlock()
if p.zmodemState == "" { if p.zmodemState == "" {
if len(b) > 50 && bytes.Contains(b[:50], zmodemRecvStartMark) { if len(b) > 25 && bytes.Contains(b[:50], zmodemRecvStartMark) {
p.zmodemState = zmodemStateRecv p.zmodemState = zmodemStateRecv
logger.Debug("Zmodem in recv state") logger.Debug("Zmodem in recv state")
} else if bytes.Contains(b[:24], zmodemSendStartMark) { } else if bytes.Contains(b[:24], zmodemSendStartMark) {
...@@ -204,6 +204,8 @@ func (p *Parser) parseVimState(b []byte) { ...@@ -204,6 +204,8 @@ func (p *Parser) parseVimState(b []byte) {
func (p *Parser) splitCmdStream(b []byte) { func (p *Parser) splitCmdStream(b []byte) {
p.parseVimState(b) p.parseVimState(b)
p.parseZmodemState(b) p.parseZmodemState(b)
p.lock.RLock()
defer p.lock.RUnlock()
if p.zmodemState != "" || p.inVimState || !p.inputInitial { if p.zmodemState != "" || p.inVimState || !p.inputInitial {
return return
} }
...@@ -248,7 +250,7 @@ func (p *Parser) IsCommandForbidden() (string, bool) { ...@@ -248,7 +250,7 @@ func (p *Parser) IsCommandForbidden() (string, bool) {
func (p *Parser) IsInZmodemRecvState() bool { func (p *Parser) IsInZmodemRecvState() bool {
p.lock.RLock() p.lock.RLock()
defer p.lock.RUnlock() defer p.lock.RUnlock()
return p.zmodemState == zmodemStateRecv return p.zmodemState != ""
} }
// Close 关闭parser // Close 关闭parser
......
...@@ -104,7 +104,6 @@ type ReplyRecorder struct { ...@@ -104,7 +104,6 @@ type ReplyRecorder struct {
} }
func (r *ReplyRecorder) initial() { func (r *ReplyRecorder) initial() {
r.backOffStorage = defaultReplayStorage
r.prepare() r.prepare()
} }
...@@ -170,6 +169,7 @@ func (r *ReplyRecorder) uploadReplay() { ...@@ -170,6 +169,7 @@ func (r *ReplyRecorder) uploadReplay() {
func (r *ReplyRecorder) UploadGzipFile(maxRetry int) { func (r *ReplyRecorder) UploadGzipFile(maxRetry int) {
if r.storage == nil{ if r.storage == nil{
r.backOffStorage = defaultReplayStorage
r.storage = NewReplayStorage() r.storage = NewReplayStorage()
} }
for i := 0; i <= maxRetry; i++ { for i := 0; i <= maxRetry; i++ {
......
...@@ -52,8 +52,6 @@ func (dt *DirectTransport) Keep() { ...@@ -52,8 +52,6 @@ func (dt *DirectTransport) Keep() {
if !dt.closed { if !dt.closed {
dt.ch <- buf[:n] dt.ch <- buf[:n]
} else { } else {
// 解决用户终端返回时, 数据丢失
_ , _ = dt.readWriter.Write(buf[:n])
logger.Debug("Transport closed") logger.Debug("Transport closed")
break break
} }
......
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