mirror of https://github.com/go-redis/redis.git
Handle IPv6 in isMovedError (#2981)
* Handle IPv6 in isMovedError * Simplify GetAddr --------- Co-authored-by: Monkey <golang@88.com>
This commit is contained in:
parent
fa9edecebc
commit
b64d9deef3
3
error.go
3
error.go
|
@ -7,6 +7,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/redis/go-redis/v9/internal"
|
||||||
"github.com/redis/go-redis/v9/internal/pool"
|
"github.com/redis/go-redis/v9/internal/pool"
|
||||||
"github.com/redis/go-redis/v9/internal/proto"
|
"github.com/redis/go-redis/v9/internal/proto"
|
||||||
)
|
)
|
||||||
|
@ -129,7 +130,9 @@ func isMovedError(err error) (moved bool, ask bool, addr string) {
|
||||||
if ind == -1 {
|
if ind == -1 {
|
||||||
return false, false, ""
|
return false, false, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
addr = s[ind+1:]
|
addr = s[ind+1:]
|
||||||
|
addr = internal.GetAddr(addr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package internal
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -64,3 +65,19 @@ func ReplaceSpaces(s string) string {
|
||||||
|
|
||||||
return builder.String()
|
return builder.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetAddr(addr string) string {
|
||||||
|
ind := strings.LastIndexByte(addr, ':')
|
||||||
|
if ind == -1 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.IndexByte(addr, '.') != -1 {
|
||||||
|
return addr
|
||||||
|
}
|
||||||
|
|
||||||
|
if addr[0] == '[' {
|
||||||
|
return addr
|
||||||
|
}
|
||||||
|
return net.JoinHostPort(addr[:ind], addr[ind+1:])
|
||||||
|
}
|
||||||
|
|
|
@ -51,3 +51,24 @@ func TestIsLower(t *testing.T) {
|
||||||
Expect(isLower(str)).To(BeTrue())
|
Expect(isLower(str)).To(BeTrue())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetAddr(t *testing.T) {
|
||||||
|
It("getAddr", func() {
|
||||||
|
str := "127.0.0.1:1234"
|
||||||
|
Expect(GetAddr(str)).To(Equal(str))
|
||||||
|
|
||||||
|
str = "[::1]:1234"
|
||||||
|
Expect(GetAddr(str)).To(Equal(str))
|
||||||
|
|
||||||
|
str = "[fd01:abcd::7d03]:6379"
|
||||||
|
Expect(GetAddr(str)).To(Equal(str))
|
||||||
|
|
||||||
|
Expect(GetAddr("::1:1234")).To(Equal("[::1]:1234"))
|
||||||
|
|
||||||
|
Expect(GetAddr("fd01:abcd::7d03:6379")).To(Equal("[fd01:abcd::7d03]:6379"))
|
||||||
|
|
||||||
|
Expect(GetAddr("127.0.0.1")).To(Equal(""))
|
||||||
|
|
||||||
|
Expect(GetAddr("127")).To(Equal(""))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue