t8y2/dbx · error

invalid Hive browserResponsePort %q: expected 0-65535

Error message

invalid Hive browserResponsePort %q: expected 0-65535

What it means

The browserresponseport connection parameter is parsed as an integer and must be within 0-65535. If strconv.Atoi fails or the value is out of range, the driver returns this error while applying connection parameters. Port 0 is allowed (disabled/auto semantics).

Source

Thrown at agents/drivers/hive-go/config.go:570

	if hasParameter(values, "ssl") {
		config.TLSExplicit = true
	}
	config.ZooKeeperAuthScheme = parameter(values, "zookeeperauthscheme")
	config.ZooKeeperAuth = parameter(values, "zookeeperauth")
	config.HTTPHeaders = prefixedParameters(values, "http.header.")
	config.HTTPCookies = prefixedParameters(values, "http.cookie.")
	config.RequestTracking = parameterBool(values, "requesttrack")
	if value, exists := firstParameter(values, "cookieauth"); exists {
		config.CookieAuth = !strings.EqualFold(value, "false")
	}
	config.CookieName = firstNonEmpty(parameter(values, "cookiename"), defaultCookieName)
	config.JWT = firstNonEmpty(parameter(values, "jwt"), os.Getenv("JWT"))
	config.BrowserToken = firstNonEmpty(parameter(values, "browsertoken"), parameter(values, "token"))
	config.BrowserClientID = parameter(values, "browserclientidentifier")
	if value := parameter(values, "browserresponseport"); value != "" {
		parsed, err := strconv.Atoi(value)
		if err != nil || parsed < 0 || parsed > 65535 {
			return fmt.Errorf("invalid Hive browserResponsePort %q: expected 0-65535", value)
		}
		config.BrowserResponsePort = parsed
	}
	if value := parameter(values, "browserresponsetimeout"); value != "" {
		parsed, err := strconv.ParseInt(value, 10, 64)
		if err != nil || parsed <= 0 {
			return fmt.Errorf("invalid Hive browserResponseTimeout %q: expected positive seconds", value)
		}
		config.BrowserResponseTimeout = time.Duration(parsed) * time.Second
	}
	config.BrowserDisableSSLCheck = parameterBool(values, "browserdisablesslcheck")
	if strings.EqualFold(config.Auth, "JWT") && config.JWT == "" {
		return errors.New("Hive JWT authentication requires jwt or the JWT environment variable")
	}
	if value := parameter(values, "fetchsize"); value != "" {
		parsed, err := strconv.Atoi(value)
		if err != nil || parsed <= 0 {
			return fmt.Errorf("invalid Hive fetchSize %q: expected a positive integer", value)

View on GitHub (pinned to c0390bff16)

Solutions

  1. Set browserResponsePort to an integer between 0 and 65535
  2. Remove the parameter entirely if a browser response port is not needed
  3. Check the wrapped DSN for stray characters around the number
  4. Use 0 explicitly to disable the browser response listener

Example fix

// before
dsn := "...;browserResponsePort=NONE"
// after
dsn := "...;browserResponsePort=0"
Defensive patterns

Strategy: validation

Validate before calling

if v := params.Get("browserResponsePort"); v != "" {
    p, err := strconv.Atoi(v)
    if err != nil || p < 0 || p > 65535 {
        return fmt.Errorf("browserResponsePort %q must be 0-65535", v)
    }
}

Try / catch

if err := applyParams(values); err != nil {
    if strings.Contains(err.Error(), "browserResponsePort") {
        return fmt.Errorf("fix browserResponsePort: %w", err)
    }
    return err
}

Prevention

When it happens

Trigger: Connection string containing browserResponsePort=abc, browserResponsePort=99999, or browserResponsePort=-1.

Common situations: Copy-pasting a callback URL where only the path was intended; typos like 655536; leaving a placeholder 'browserResponsePort=PORT' in a templated DSN.

Related errors


AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05). Data as JSON: /api/errors/4abf87a13b1b23ff. Report an issue: GitHub.