Close implements the [Connection] interface.
()
| 2232 | |
| 2233 | // Close implements the [Connection] interface. |
| 2234 | func (c *streamableClientConn) Close() error { |
| 2235 | c.closeOnce.Do(func() { |
| 2236 | if errors.Is(c.failure(), ErrSessionMissing) { |
| 2237 | // If the session is missing, no need to delete it. |
| 2238 | } else { |
| 2239 | req, err := http.NewRequestWithContext(c.ctx, http.MethodDelete, c.url, nil) |
| 2240 | if err != nil { |
| 2241 | c.closeErr = err |
| 2242 | } else { |
| 2243 | if err := c.setMCPHeaders(req); err != nil { |
| 2244 | c.closeErr = err |
| 2245 | } else if _, err := c.client.Do(req); err != nil { |
| 2246 | c.closeErr = err |
| 2247 | } |
| 2248 | } |
| 2249 | } |
| 2250 | |
| 2251 | // Cancel any hanging network requests after cleanup. |
| 2252 | c.cancel() |
| 2253 | close(c.done) |
| 2254 | }) |
| 2255 | return c.closeErr |
| 2256 | } |
| 2257 | |
| 2258 | // calculateReconnectDelay calculates a delay using exponential backoff with full jitter. |
| 2259 | func calculateReconnectDelay(attempt int) time.Duration { |
nothing calls this directly
no test coverage detected