MCPcopy
hub / github.com/redis/go-redis / setupFailoverConn

Function setupFailoverConn

sentinel.go:399–432  ·  view source on GitHub ↗
(u *url.URL)

Source from the content-addressed store, hash-verified

397}
398
399func setupFailoverConn(u *url.URL) (*FailoverOptions, error) {
400 o := &FailoverOptions{}
401
402 o.SentinelUsername, o.SentinelPassword = getUserPassword(u)
403
404 h, p := getHostPortWithDefaults(u)
405 o.SentinelAddrs = append(o.SentinelAddrs, net.JoinHostPort(h, p))
406
407 switch u.Scheme {
408 case "rediss":
409 o.TLSConfig = &tls.Config{ServerName: h, MinVersion: tls.VersionTLS12}
410 case "redis":
411 o.TLSConfig = nil
412 default:
413 return nil, fmt.Errorf("redis: invalid URL scheme: %s", u.Scheme)
414 }
415
416 f := strings.FieldsFunc(u.Path, func(r rune) bool {
417 return r == '/'
418 })
419 switch len(f) {
420 case 0:
421 o.DB = 0
422 case 1:
423 var err error
424 if o.DB, err = strconv.Atoi(f[0]); err != nil {
425 return nil, fmt.Errorf("redis: invalid database number: %q", f[0])
426 }
427 default:
428 return nil, fmt.Errorf("redis: invalid URL path: %s", u.Path)
429 }
430
431 return setupFailoverConnParams(u, o)
432}
433
434func setupFailoverConnParams(u *url.URL, o *FailoverOptions) (*FailoverOptions, error) {
435 q := queryOptions{q: u.Query()}

Callers 1

ParseFailoverURLFunction · 0.85

Calls 3

getUserPasswordFunction · 0.85
getHostPortWithDefaultsFunction · 0.85
setupFailoverConnParamsFunction · 0.85

Tested by

no test coverage detected