{"record":{"id":"8b507cb9c016bc74","repo":"chenhg5/cc-connect","slug":"cloud-web-register-request-w","errorCode":null,"errorMessage":"cloud_web: register request: %w","messagePattern":"cloud_web: register request: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"platform/cloud-web/poll.go","lineNumber":106,"sourceCode":"\t}\n\treturn nil\n}\n\nfunc (t *pollTransport) register(ctx context.Context) (map[string]bool, error) {\n\tbody, err := json.Marshal(buildRegisterPayload(t.name, t.project, \"long_poll\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\turl := joinURL(t.baseURL, defaultRegister)\n\treq, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(body))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tauthHTTP(req, t.token)\n\tresp, err := t.client.Do(req)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cloud_web: register request: %w\", err)\n\t}\n\tdefer func() { _ = resp.Body.Close() }()\n\traw, err := io.ReadAll(io.LimitReader(resp.Body, 1<<20))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn nil, fmt.Errorf(\"cloud_web: register HTTP %d: %s\", resp.StatusCode, string(raw))\n\t}\n\treturn parseRegisterAck(raw)\n}\n\nfunc (t *pollTransport) pollLoop(ctx context.Context) {\n\tfor {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn\n\t\tdefault:","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/platform/cloud-web/poll.go#L88-L124","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Check the wrapped cause: 'connection refused' -> server down/wrong port; 'no such host' -> fix base_url DNS; TLS errors -> fix certs or proxy.","Confirm the cloud-web server is running and reachable: curl -v the register endpoint URL.","Fix base_url in config.toml (scheme, host, port, any path prefix).","If running behind an HTTP proxy, set HTTPS_PROXY for the cc-connect process."],"exampleFix":"// config.toml — before\nbase_url = \"https://cloud-web.internal\"  # NXDOMAIN -> register request fails\n\n// after\nbase_url = \"https://cloud-web.internal.svc.cluster.local:8443\"","handlingStrategy":"retry","validationCode":"// pre-flight connectivity check before Start\nu, err := url.Parse(baseURL)\nif err != nil || u.Host == \"\" {\n    return fmt.Errorf(\"invalid base_url %q\", baseURL)\n}\nconn, err := net.DialTimeout(\"tcp\", net.JoinHostPort(u.Hostname(), u.Port()), 5*time.Second)\nif err != nil {\n    return fmt.Errorf(\"cloud-web server unreachable at %s: %w\", u.Host, err)\n}\nconn.Close()","typeGuard":null,"tryCatchPattern":"if err := platform.Start(ctx, handler); err != nil {\n    if strings.Contains(err.Error(), \"register request\") {\n        // network-level failure: retry with backoff\n        for i := 0; i < 3; i++ {\n            time.Sleep(time.Duration(1<<i) * time.Second)\n            if err = platform.Start(ctx, handler); err == nil {\n                break\n            }\n        }\n    }\n    return err\n}","preventionTips":["Verify base_url DNS, port, and scheme before deployment","Ensure the cloud-web server is running before starting cc-connect (dependency ordering in systemd)","Set HTTPS_PROXY correctly in restricted networks","Use retry-with-backoff on Start for transient network faults"],"tags":["network","http","registration","connectivity"],"backgroundTag":"network-request-failed","analyzedSha":"4000b2338aa6e850c99df54f8b0ed6ed7460b401","analyzedAt":"2026-09-06T11:45:09.575Z","contentChangedAt":"2026-09-06T11:45:09.575Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}