Skip to content

Commit ba27fae

Browse files
committed
fix(config): return copied service maps instead of internal references
Fixes: #3247
1 parent 6d9250a commit ba27fae

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

config/service.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,14 @@ func GetProviderService(name string) common.RPCService {
8989

9090
// GetProviderServiceMap gets ProviderServiceMap
9191
func GetProviderServiceMap() map[string]common.RPCService {
92-
return proServices
92+
proServicesLock.Lock()
93+
defer proServicesLock.Unlock()
94+
95+
m := make(map[string]common.RPCService, len(proServices))
96+
for k, v := range proServices {
97+
m[k] = v
98+
}
99+
return m
93100
}
94101

95102
func GetProviderServiceInfo(name string) any {
@@ -100,7 +107,14 @@ func GetProviderServiceInfo(name string) any {
100107

101108
// GetConsumerServiceMap gets ProviderServiceMap
102109
func GetConsumerServiceMap() map[string]common.RPCService {
103-
return conServices
110+
conServicesLock.Lock()
111+
defer conServicesLock.Unlock()
112+
113+
m := make(map[string]common.RPCService, len(conServices))
114+
for k, v := range conServices {
115+
m[k] = v
116+
}
117+
return m
104118
}
105119

106120
// SetConsumerServiceByInterfaceName is used by pb serialization

0 commit comments

Comments
 (0)