Просмотр исходного кода

smux Stream.Write may also return EOF.

David Fifield 6 лет назад
Родитель
Сommit
05444dcb22
2 измененных файлов с 8 добавлено и 0 удалено
  1. 4 0
      dnstt-client/main.go
  2. 4 0
      dnstt-server/main.go

+ 4 - 0
dnstt-client/main.go

@@ -91,6 +91,10 @@ func handle(local *net.TCPConn, sess *smux.Session, conv uint32) error {
 	go func() {
 		defer wg.Done()
 		_, err := io.Copy(stream, local)
+		if err == io.EOF {
+			// smux Stream.Write may return io.EOF.
+			err = nil
+		}
 		if err != nil {
 			log.Printf("stream %08x:%d copy stream←local: %v\n", conv, stream.ID(), err)
 		}

+ 4 - 0
dnstt-server/main.go

@@ -193,6 +193,10 @@ func handleStream(stream *smux.Stream, upstream *net.TCPAddr, conv uint32) error
 	go func() {
 		defer wg.Done()
 		_, err := io.Copy(stream, conn)
+		if err == io.EOF {
+			// smux Stream.Write may return io.EOF.
+			err = nil
+		}
 		if err != nil {
 			log.Printf("stream %08x:%d copy stream←upstream: %v\n", conv, stream.ID(), err)
 		}