@@ -93,20 +93,24 @@ func (c *clientConn) Upstream() any {
9393 return c .Conn
9494}
9595
96+ var _ N.NetPacketConn = (* clientPacketConn )(nil )
97+
9698type clientPacketConn struct {
97- N.ExtendedConn
98- access sync.Mutex
99- destination M.Socksaddr
100- requestWritten bool
101- responseRead bool
99+ N.AbstractConn
100+ conn N.ExtendedConn
101+ access sync.Mutex
102+ destination M.Socksaddr
103+ requestWritten bool
104+ responseRead bool
105+ readWaitOptions N.ReadWaitOptions
102106}
103107
104108func (c * clientPacketConn ) NeedHandshake () bool {
105109 return ! c .requestWritten
106110}
107111
108112func (c * clientPacketConn ) readResponse () error {
109- response , err := ReadStreamResponse (c .ExtendedConn )
113+ response , err := ReadStreamResponse (c .conn )
110114 if err != nil {
111115 return err
112116 }
@@ -125,14 +129,14 @@ func (c *clientPacketConn) Read(b []byte) (n int, err error) {
125129 c .responseRead = true
126130 }
127131 var length uint16
128- err = binary .Read (c .ExtendedConn , binary .BigEndian , & length )
132+ err = binary .Read (c .conn , binary .BigEndian , & length )
129133 if err != nil {
130134 return
131135 }
132136 if cap (b ) < int (length ) {
133137 return 0 , io .ErrShortBuffer
134138 }
135- return io .ReadFull (c .ExtendedConn , b [:length ])
139+ return io .ReadFull (c .conn , b [:length ])
136140}
137141
138142func (c * clientPacketConn ) writeRequest (payload []byte ) (n int , err error ) {
@@ -156,7 +160,7 @@ func (c *clientPacketConn) writeRequest(payload []byte) (n int, err error) {
156160 common .Error (buffer .Write (payload )),
157161 )
158162 }
159- _ , err = c .ExtendedConn .Write (buffer .Bytes ())
163+ _ , err = c .conn .Write (buffer .Bytes ())
160164 if err != nil {
161165 return
162166 }
@@ -174,11 +178,11 @@ func (c *clientPacketConn) Write(b []byte) (n int, err error) {
174178 return c .writeRequest (b )
175179 }
176180 }
177- err = binary .Write (c .ExtendedConn , binary .BigEndian , uint16 (len (b )))
181+ err = binary .Write (c .conn , binary .BigEndian , uint16 (len (b )))
178182 if err != nil {
179183 return
180184 }
181- return c .ExtendedConn .Write (b )
185+ return c .conn .Write (b )
182186}
183187
184188func (c * clientPacketConn ) ReadBuffer (buffer * buf.Buffer ) (err error ) {
@@ -190,11 +194,11 @@ func (c *clientPacketConn) ReadBuffer(buffer *buf.Buffer) (err error) {
190194 c .responseRead = true
191195 }
192196 var length uint16
193- err = binary .Read (c .ExtendedConn , binary .BigEndian , & length )
197+ err = binary .Read (c .conn , binary .BigEndian , & length )
194198 if err != nil {
195199 return
196200 }
197- _ , err = buffer .ReadFullFrom (c .ExtendedConn , int (length ))
201+ _ , err = buffer .ReadFullFrom (c .conn , int (length ))
198202 return
199203}
200204
@@ -211,7 +215,7 @@ func (c *clientPacketConn) WriteBuffer(buffer *buf.Buffer) error {
211215 }
212216 bLen := buffer .Len ()
213217 binary .BigEndian .PutUint16 (buffer .ExtendHeader (2 ), uint16 (bLen ))
214- return c .ExtendedConn .WriteBuffer (buffer )
218+ return c .conn .WriteBuffer (buffer )
215219}
216220
217221func (c * clientPacketConn ) FrontHeadroom () int {
@@ -227,14 +231,14 @@ func (c *clientPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error)
227231 c .responseRead = true
228232 }
229233 var length uint16
230- err = binary .Read (c .ExtendedConn , binary .BigEndian , & length )
234+ err = binary .Read (c .conn , binary .BigEndian , & length )
231235 if err != nil {
232236 return
233237 }
234238 if cap (p ) < int (length ) {
235239 return 0 , nil , io .ErrShortBuffer
236240 }
237- n , err = io .ReadFull (c .ExtendedConn , p [:length ])
241+ n , err = io .ReadFull (c .conn , p [:length ])
238242 return
239243}
240244
@@ -248,11 +252,11 @@ func (c *clientPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
248252 return c .writeRequest (p )
249253 }
250254 }
251- err = binary .Write (c .ExtendedConn , binary .BigEndian , uint16 (len (p )))
255+ err = binary .Write (c .conn , binary .BigEndian , uint16 (len (p )))
252256 if err != nil {
253257 return
254258 }
255- return c .ExtendedConn .Write (p )
259+ return c .conn .Write (p )
256260}
257261
258262func (c * clientPacketConn ) ReadPacket (buffer * buf.Buffer ) (destination M.Socksaddr , err error ) {
@@ -265,7 +269,7 @@ func (c *clientPacketConn) WritePacket(buffer *buf.Buffer, destination M.Socksad
265269}
266270
267271func (c * clientPacketConn ) LocalAddr () net.Addr {
268- return c .ExtendedConn .LocalAddr ()
272+ return c .conn .LocalAddr ()
269273}
270274
271275func (c * clientPacketConn ) RemoteAddr () net.Addr {
@@ -277,25 +281,27 @@ func (c *clientPacketConn) NeedAdditionalReadDeadline() bool {
277281}
278282
279283func (c * clientPacketConn ) Upstream () any {
280- return c .ExtendedConn
284+ return c .conn
281285}
282286
283287var _ N.NetPacketConn = (* clientPacketAddrConn )(nil )
284288
285289type clientPacketAddrConn struct {
286- N.ExtendedConn
287- access sync.Mutex
288- destination M.Socksaddr
289- requestWritten bool
290- responseRead bool
290+ N.AbstractConn
291+ conn N.ExtendedConn
292+ access sync.Mutex
293+ destination M.Socksaddr
294+ requestWritten bool
295+ responseRead bool
296+ readWaitOptions N.ReadWaitOptions
291297}
292298
293299func (c * clientPacketAddrConn ) NeedHandshake () bool {
294300 return ! c .requestWritten
295301}
296302
297303func (c * clientPacketAddrConn ) readResponse () error {
298- response , err := ReadStreamResponse (c .ExtendedConn )
304+ response , err := ReadStreamResponse (c .conn )
299305 if err != nil {
300306 return err
301307 }
@@ -313,7 +319,7 @@ func (c *clientPacketAddrConn) ReadFrom(p []byte) (n int, addr net.Addr, err err
313319 }
314320 c .responseRead = true
315321 }
316- destination , err := M .SocksaddrSerializer .ReadAddrPort (c .ExtendedConn )
322+ destination , err := M .SocksaddrSerializer .ReadAddrPort (c .conn )
317323 if err != nil {
318324 return
319325 }
@@ -323,14 +329,14 @@ func (c *clientPacketAddrConn) ReadFrom(p []byte) (n int, addr net.Addr, err err
323329 addr = destination .UDPAddr ()
324330 }
325331 var length uint16
326- err = binary .Read (c .ExtendedConn , binary .BigEndian , & length )
332+ err = binary .Read (c .conn , binary .BigEndian , & length )
327333 if err != nil {
328334 return
329335 }
330336 if cap (p ) < int (length ) {
331337 return 0 , nil , io .ErrShortBuffer
332338 }
333- n , err = io .ReadFull (c .ExtendedConn , p [:length ])
339+ n , err = io .ReadFull (c .conn , p [:length ])
334340 return
335341}
336342
@@ -360,7 +366,7 @@ func (c *clientPacketAddrConn) writeRequest(payload []byte, destination M.Socksa
360366 common .Error (buffer .Write (payload )),
361367 )
362368 }
363- _ , err = c .ExtendedConn .Write (buffer .Bytes ())
369+ _ , err = c .conn .Write (buffer .Bytes ())
364370 if err != nil {
365371 return
366372 }
@@ -378,15 +384,15 @@ func (c *clientPacketAddrConn) WriteTo(p []byte, addr net.Addr) (n int, err erro
378384 return c .writeRequest (p , M .SocksaddrFromNet (addr ))
379385 }
380386 }
381- err = M .SocksaddrSerializer .WriteAddrPort (c .ExtendedConn , M .SocksaddrFromNet (addr ))
387+ err = M .SocksaddrSerializer .WriteAddrPort (c .conn , M .SocksaddrFromNet (addr ))
382388 if err != nil {
383389 return
384390 }
385- err = binary .Write (c .ExtendedConn , binary .BigEndian , uint16 (len (p )))
391+ err = binary .Write (c .conn , binary .BigEndian , uint16 (len (p )))
386392 if err != nil {
387393 return
388394 }
389- return c .ExtendedConn .Write (p )
395+ return c .conn .Write (p )
390396}
391397
392398func (c * clientPacketAddrConn ) ReadPacket (buffer * buf.Buffer ) (destination M.Socksaddr , err error ) {
@@ -397,16 +403,16 @@ func (c *clientPacketAddrConn) ReadPacket(buffer *buf.Buffer) (destination M.Soc
397403 }
398404 c .responseRead = true
399405 }
400- destination , err = M .SocksaddrSerializer .ReadAddrPort (c .ExtendedConn )
406+ destination , err = M .SocksaddrSerializer .ReadAddrPort (c .conn )
401407 if err != nil {
402408 return
403409 }
404410 var length uint16
405- err = binary .Read (c .ExtendedConn , binary .BigEndian , & length )
411+ err = binary .Read (c .conn , binary .BigEndian , & length )
406412 if err != nil {
407413 return
408414 }
409- _ , err = buffer .ReadFullFrom (c .ExtendedConn , int (length ))
415+ _ , err = buffer .ReadFullFrom (c .conn , int (length ))
410416 return
411417}
412418
@@ -428,11 +434,11 @@ func (c *clientPacketAddrConn) WritePacket(buffer *buf.Buffer, destination M.Soc
428434 return err
429435 }
430436 common .Must (binary .Write (header , binary .BigEndian , uint16 (bLen )))
431- return c .ExtendedConn .WriteBuffer (buffer )
437+ return c .conn .WriteBuffer (buffer )
432438}
433439
434440func (c * clientPacketAddrConn ) LocalAddr () net.Addr {
435- return c .ExtendedConn .LocalAddr ()
441+ return c .conn .LocalAddr ()
436442}
437443
438444func (c * clientPacketAddrConn ) FrontHeadroom () int {
@@ -444,5 +450,5 @@ func (c *clientPacketAddrConn) NeedAdditionalReadDeadline() bool {
444450}
445451
446452func (c * clientPacketAddrConn ) Upstream () any {
447- return c .ExtendedConn
453+ return c .conn
448454}
0 commit comments