mirror of
https://github.com/redis/go-redis.git
synced 2025-04-17 20:17:02 +03:00
Set client name in HELLO RESP handshake (#3294)
This commit is contained in:
parent
555a41ecc7
commit
1c9309fdc2
2
redis.go
2
redis.go
@ -310,7 +310,7 @@ func (c *baseClient) initConn(ctx context.Context, cn *pool.Conn) error {
|
||||
|
||||
// for redis-server versions that do not support the HELLO command,
|
||||
// RESP2 will continue to be used.
|
||||
if err = conn.Hello(ctx, protocol, username, password, "").Err(); err == nil {
|
||||
if err = conn.Hello(ctx, protocol, username, password, c.opt.ClientName).Err(); err == nil {
|
||||
auth = true
|
||||
} else if !isRedisError(err) {
|
||||
// When the server responds with the RESP protocol and the result is not a normal
|
||||
|
@ -186,6 +186,32 @@ var _ = Describe("Client", func() {
|
||||
Expect(val).Should(ContainSubstring("name=hi"))
|
||||
})
|
||||
|
||||
It("should attempt to set client name in HELLO", func() {
|
||||
opt := redisOptions()
|
||||
opt.ClientName = "hi"
|
||||
db := redis.NewClient(opt)
|
||||
|
||||
defer func() {
|
||||
Expect(db.Close()).NotTo(HaveOccurred())
|
||||
}()
|
||||
|
||||
// Client name should be already set on any successfully initialized connection
|
||||
name, err := db.ClientGetName(ctx).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(name).Should(Equal("hi"))
|
||||
|
||||
// HELLO should be able to explicitly overwrite the client name
|
||||
conn := db.Conn()
|
||||
hello, err := conn.Hello(ctx, 3, "", "", "hi2").Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(hello["proto"]).Should(Equal(int64(3)))
|
||||
name, err = conn.ClientGetName(ctx).Result()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(name).Should(Equal("hi2"))
|
||||
err = conn.Close()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
})
|
||||
|
||||
It("should client PROTO 2", func() {
|
||||
opt := redisOptions()
|
||||
opt.Protocol = 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user