chenhg5/cc-connect · critical

cloud_web: register request: %w

Error message

cloud_web: register request: %w

What it means

The long-poll transport failed at the network layer while POSTing its registration request to the cloud-web server's register endpoint. The underlying client.Do error (DNS failure, connection refused, TLS error, context cancellation) is wrapped with this prefix. Unlike gateway mode, register failure here aborts Start entirely.

Source

Thrown at platform/cloud-web/poll.go:106

	}
	return nil
}

func (t *pollTransport) register(ctx context.Context) (map[string]bool, error) {
	body, err := json.Marshal(buildRegisterPayload(t.name, t.project, "long_poll"))
	if err != nil {
		return nil, err
	}
	url := joinURL(t.baseURL, defaultRegister)
	req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(body))
	if err != nil {
		return nil, err
	}
	req.Header.Set("Content-Type", "application/json")
	authHTTP(req, t.token)
	resp, err := t.client.Do(req)
	if err != nil {
		return nil, fmt.Errorf("cloud_web: register request: %w", err)
	}
	defer func() { _ = resp.Body.Close() }()
	raw, err := io.ReadAll(io.LimitReader(resp.Body, 1<<20))
	if err != nil {
		return nil, err
	}
	if resp.StatusCode != http.StatusOK {
		return nil, fmt.Errorf("cloud_web: register HTTP %d: %s", resp.StatusCode, string(raw))
	}
	return parseRegisterAck(raw)
}

func (t *pollTransport) pollLoop(ctx context.Context) {
	for {
		select {
		case <-ctx.Done():
			return
		default:

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Check the wrapped cause: 'connection refused' -> server down/wrong port; 'no such host' -> fix base_url DNS; TLS errors -> fix certs or proxy.
  2. Confirm the cloud-web server is running and reachable: curl -v the register endpoint URL.
  3. Fix base_url in config.toml (scheme, host, port, any path prefix).
  4. If running behind an HTTP proxy, set HTTPS_PROXY for the cc-connect process.

Example fix

// config.toml — before
base_url = "https://cloud-web.internal"  # NXDOMAIN -> register request fails

// after
base_url = "https://cloud-web.internal.svc.cluster.local:8443"
Defensive patterns

Strategy: retry

Validate before calling

// pre-flight connectivity check before Start
u, err := url.Parse(baseURL)
if err != nil || u.Host == "" {
    return fmt.Errorf("invalid base_url %q", baseURL)
}
conn, err := net.DialTimeout("tcp", net.JoinHostPort(u.Hostname(), u.Port()), 5*time.Second)
if err != nil {
    return fmt.Errorf("cloud-web server unreachable at %s: %w", u.Host, err)
}
conn.Close()

Try / catch

if err := platform.Start(ctx, handler); err != nil {
    if strings.Contains(err.Error(), "register request") {
        // network-level failure: retry with backoff
        for i := 0; i < 3; i++ {
            time.Sleep(time.Duration(1<<i) * time.Second)
            if err = platform.Start(ctx, handler); err == nil {
                break
            }
        }
    }
    return err
}

Prevention

When it happens

Trigger: Start() -> register() -> client.Do returns error: server host unreachable or DNS not resolving, connection refused on wrong port, TLS certificate problems, or the ctx passed to Start was already cancelled.

Common situations: base_url pointing at a hostname that doesn't resolve (typos, internal DNS); cloud-web server not running or listening on a different port; corporate proxy blocking egress; missing/invalid TLS certs on self-hosted deployments.

Related errors


AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06). Data as JSON: /api/errors/8b507cb9c016bc74. Report an issue: GitHub.