MCPcopy
hub / github.com/MetaCubeX/mihomo / streamConnContext

Method streamConnContext

adapter/outbound/vless.go:232–265  ·  view source on GitHub ↗
(ctx context.Context, c net.Conn, metadata *C.Metadata)

Source from the content-addressed store, hash-verified

230}
231
232func (v *Vless) streamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (conn net.Conn, err error) {
233 if ctx.Done() != nil {
234 done := N.SetupContextForConn(ctx, c)
235 defer done(&err)
236 }
237 if v.encryption != nil {
238 c, err = v.encryption.Handshake(c)
239 if err != nil {
240 return
241 }
242 }
243 if metadata.NetWork == C.UDP {
244 if v.option.PacketAddr {
245 metadata = &C.Metadata{
246 NetWork: C.UDP,
247 Host: packetaddr.SeqPacketMagicAddress,
248 DstPort: 443,
249 }
250 } else {
251 metadata = &C.Metadata{ // a clear metadata only contains ip
252 NetWork: C.UDP,
253 DstIP: metadata.DstIP,
254 DstPort: metadata.DstPort,
255 }
256 }
257 conn, err = v.client.StreamConn(c, parseVlessAddr(metadata, v.option.XUDP))
258 } else {
259 conn, err = v.client.StreamConn(c, parseVlessAddr(metadata, false))
260 }
261 if err != nil {
262 conn = nil
263 }
264 return
265}
266
267func (v *Vless) streamTLSConn(ctx context.Context, conn net.Conn, isH2 bool) (net.Conn, error) {
268 if v.option.TLS {

Callers 1

StreamConnContextMethod · 0.95

Calls 4

parseVlessAddrFunction · 0.85
DoneMethod · 0.80
StreamConnMethod · 0.65
HandshakeMethod · 0.45

Tested by

no test coverage detected