Skip to content

Commit eb9de1e

Browse files
committed
use isWaitedStarttlsRes flag
1 parent f4d97fd commit eb9de1e

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

pipe.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ type Pipe struct {
3030
locked bool
3131
blocker chan interface{}
3232

33+
isWaitedStarttlsRes bool
34+
3335
timeAtConnected time.Time
3436
timeAtDataStarting time.Time
3537

@@ -91,6 +93,7 @@ func (p *Pipe) mediateOnUpstream(b []byte, i int) ([]byte, int, bool) {
9193
if !p.tls && p.readytls {
9294
p.locked = true
9395
er := p.starttls()
96+
p.isWaitedStarttlsRes = true
9497
if er != nil {
9598
go p.afterCommHook([]byte(fmt.Sprintf("starttls error: %s", er.Error())), pxyToDst)
9699
}
@@ -123,15 +126,15 @@ func (p *Pipe) mediateOnDownstream(b []byte, i int) ([]byte, int, bool) {
123126
}
124127
}
125128

126-
// time before email input
127-
p.setTimeAtDataStarting(b)
128-
129-
// remove buffering ready response
130-
if p.tls && !p.readytls && p.locked {
131-
// continue
129+
// remove buffering "220 2.0.0 Ready to start TLS" response
130+
if p.isWaitedStarttlsRes {
131+
p.isWaitedStarttlsRes = false
132132
return b, i, true
133133
}
134134

135+
// time before email input
136+
p.setTimeAtDataStarting(b)
137+
135138
if p.isResponseOfEHLOWithoutStartTLS(b) {
136139
go p.afterCommHook(data, pxyToSrc)
137140
} else {

0 commit comments

Comments
 (0)