MINOR: stream-int: add new function si_detach_endpoint()
This function only detaches the endpoint from the stream-int and
optionally returns the original pointer. This will be needed to
steal idle connections from other connections.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 449d5e6..6e4cfe8 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -129,6 +129,19 @@
si->state = si->prev_state = state;
}
+/* only detaches the endpoint from the SI, which means that it's set to
+ * NULL and that ->ops is mapped to si_embedded_ops. The previous endpoint
+ * is returned.
+ */
+static inline enum obj_type *si_detach_endpoint(struct stream_interface *si)
+{
+ enum obj_type *prev = si->end;
+
+ si->end = NULL;
+ si->ops = &si_embedded_ops;
+ return prev;
+}
+
/* Release the endpoint if it's a connection or an applet, then nullify it.
* Note: released connections are closed then freed.
*/
@@ -149,8 +162,7 @@
appctx->applet->release(appctx);
appctx_free(appctx); /* we share the connection pool */
}
- si->end = NULL;
- si->ops = &si_embedded_ops;
+ si_detach_endpoint(si);
}
/* Turn a possibly existing connection endpoint of stream interface <si> to