Skip to content

Commit 62c51de

Browse files
Terminate zombie goroute.
1 parent 070054e commit 62c51de

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

gotty/webtty/webtty.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,32 +74,30 @@ func (wt *WebTTY) Run(ctx context.Context) error {
7474

7575
errs := make(chan error, 3)
7676

77+
slaveBuffer := make([]byte, wt.bufferSize)
7778
go func() {
7879
errs <- func() error {
79-
buffer := make([]byte, wt.bufferSize)
8080
for {
81-
n, err := wt.slave.Read(buffer)
81+
n, err := wt.slave.Read(slaveBuffer)
8282
if err != nil {
8383
return ErrSlaveClosed
8484
}
85-
86-
err = wt.handleSlaveReadEvent(buffer[:n])
85+
err = wt.handleSlaveReadEvent(slaveBuffer[:n])
8786
if err != nil {
8887
return err
8988
}
9089
}
9190
}()
9291
}()
93-
92+
masterBuffer := make([]byte, wt.bufferSize)
9493
go func() {
9594
errs <- func() error {
96-
buffer := make([]byte, wt.bufferSize)
9795
for {
98-
n, err := wt.masterConn.Read(buffer)
96+
n, err := wt.masterConn.Read(masterBuffer)
9997
if err != nil {
10098
return ErrMasterClosed
10199
}
102-
err = wt.handleMasterReadEvent(buffer[:n])
100+
err = wt.handleMasterReadEvent(masterBuffer[:n])
103101
if err != nil {
104102
return err
105103
}
@@ -126,6 +124,11 @@ func (wt *WebTTY) Run(ctx context.Context) error {
126124
}()
127125
}()
128126

127+
defer func() {
128+
slaveBuffer = nil
129+
masterBuffer = nil
130+
}()
131+
129132
select {
130133
case <-ctx.Done():
131134
err = ctx.Err()

0 commit comments

Comments
 (0)