Skip to content

Commit

Permalink
Update common/xudp/xudp.go and common/mux/server.go
Browse files Browse the repository at this point in the history
  • Loading branch information
RPRX authored Apr 7, 2023
1 parent 15cf31f commit 76b27a3
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
3 changes: 3 additions & 0 deletions common/mux/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,9 @@ func (w *ServerWorker) handleStatusNew(ctx context.Context, meta *FrameMetadata,
// Actually, it won't return an error in Xray-core's implementations.
link, err := w.dispatcher.Dispatch(ctx, meta.Target)
if err != nil {
XUDPManager.Lock()
delete(XUDPManager.Map, x.GlobalID)
XUDPManager.Unlock()
err = newError("failed to dispatch request to ", meta.Target).Base(err)
if xudp.Show {
fmt.Printf("XUDP new: %v err: %v\n", meta.GlobalID, err)
Expand Down
18 changes: 9 additions & 9 deletions common/xudp/xudp.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ var AddrParser = protocol.NewAddressParser(

var (
Show bool
BaseKey [32]byte
BaseKey []byte
)

const (
Expand All @@ -37,24 +37,24 @@ func init() {
if strings.ToLower(os.Getenv(EnvShow)) == "true" {
Show = true
}
if raw := os.Getenv(EnvBaseKey); raw != "" {
if key, _ := base64.RawURLEncoding.DecodeString(raw); len(key) == len(BaseKey) {
copy(BaseKey[:], key)
if raw, found := os.LookupEnv(EnvBaseKey); found {
if BaseKey, _ = base64.RawURLEncoding.DecodeString(raw); len(BaseKey) == 32 {
return
} else {
panic(EnvBaseKey + ": invalid value: " + raw)
}
panic(EnvBaseKey + ": invalid value: " + raw)
}
rand.Read(BaseKey[:])
rand.Read(BaseKey)
}

func GetGlobalID(ctx context.Context) (globalID [8]byte) {
if inbound := session.InboundFromContext(ctx); inbound != nil && inbound.Source.Network == net.Network_UDP &&
(inbound.Name == "dokodemo-door" || inbound.Name == "socks" || inbound.Name == "shadowsocks") {
h := blake3.New(8, BaseKey[:])
h := blake3.New(8, BaseKey)
h.Write([]byte(inbound.Source.String()))
copy(globalID[:], h.Sum(nil))
fmt.Printf("XUDP inbound.Source.String(): %v\tglobalID: %v\n", inbound.Source.String(), globalID)
if Show {
fmt.Printf("XUDP inbound.Source.String(): %v\tglobalID: %v\n", inbound.Source.String(), globalID)
}
}
return
}
Expand Down

0 comments on commit 76b27a3

Please sign in to comment.