mirror of
https://github.com/XTLS/Xray-core.git
synced 2024-11-23 07:23:01 +00:00
fix(config): fix grpc cofnig parsing when service name only has one '/' char
This commit is contained in:
parent
599cfd09b0
commit
efe8f3f4d6
@ -21,8 +21,13 @@ func (c *Config) getServiceName() string {
|
||||
if !strings.HasPrefix(c.ServiceName, "/") {
|
||||
return url.PathEscape(c.ServiceName)
|
||||
}
|
||||
|
||||
// Otherwise new custom paths
|
||||
rawServiceName := c.ServiceName[1:strings.LastIndex(c.ServiceName, "/")] // trim from first to last '/'
|
||||
lastIndex := strings.LastIndex(c.ServiceName, "/")
|
||||
if lastIndex < 1 {
|
||||
lastIndex = 1
|
||||
}
|
||||
rawServiceName := c.ServiceName[1:lastIndex] // trim from first to last '/'
|
||||
serviceNameParts := strings.Split(rawServiceName, "/")
|
||||
for i := range serviceNameParts {
|
||||
serviceNameParts[i] = url.PathEscape(serviceNameParts[i])
|
||||
|
@ -1,8 +1,9 @@
|
||||
package grpc
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestConfig_GetServiceName(t *testing.T) {
|
||||
@ -31,6 +32,11 @@ func TestConfig_GetServiceName(t *testing.T) {
|
||||
ServiceName: "/hello /world!/a|b",
|
||||
Expected: "hello%20/world%21",
|
||||
},
|
||||
{
|
||||
TestName: "path with only one '/'",
|
||||
ServiceName: "/foo",
|
||||
Expected: "",
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
t.Run(test.TestName, func(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user