Skip to content

Commit fd2f8e8

Browse files
committed
Fix missing creator for vectorised writer
1 parent e7bde86 commit fd2f8e8

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

‎common/bufio/vectorised.go‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ func NewVectorisedWriter(writer io.Writer) N.VectorisedWriter {
2121
}
2222

2323
func CreateVectorisedWriter(writer any) (N.VectorisedWriter, bool) {
24+
if vectorisedCreator, isVectorisedCreator := writer.(N.VectorisedWriteCreator); isVectorisedCreator {
25+
return vectorisedCreator.CreateVectorisedWriter()
26+
}
2427
if runtime.GOOS == "windows" {
2528
switch conn := writer.(type) {
2629
case N.VectorisedWriter:
@@ -48,6 +51,14 @@ func CreateVectorisedWriter(writer any) (N.VectorisedWriter, bool) {
4851
return &SyscallVectorisedWriter{upstream: writer, rawConn: conn}, true
4952
}
5053
}
54+
if u, ok := writer.(N.WriterWithUpstream); ok && u.WriterReplaceable() {
55+
if u, ok := writer.(N.WithUpstreamWriter); ok {
56+
return CreateVectorisedWriter(u.UpstreamWriter())
57+
}
58+
if u, ok := writer.(common.WithUpstream); ok {
59+
return CreateVectorisedWriter(u.Upstream())
60+
}
61+
}
5162
return nil, false
5263
}
5364

‎common/network/vectorised.go‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ type VectorisedWriter interface {
99
WriteVectorised(buffers []*buf.Buffer) error
1010
}
1111

12+
type VectorisedWriteCreator interface {
13+
CreateVectorisedWriter() (VectorisedWriter, bool)
14+
}
15+
1216
type VectorisedPacketWriter interface {
1317
WriteVectorisedPacket(buffers []*buf.Buffer, destination M.Socksaddr) error
1418
}

0 commit comments

Comments
 (0)