]> git.kaiwu.me - haproxy.git/commitdiff
MINOR: stconn: add sc_hastream() and __sc_hastream() helpers
authorFrederic Lecaille <flecaille@haproxy.com>
Thu, 19 Mar 2026 13:52:39 +0000 (14:52 +0100)
committerFrederic Lecaille <flecaille@haproxy.com>
Fri, 24 Apr 2026 09:32:45 +0000 (11:32 +0200)
This patch introduces the sc_hastream() and __sc_hastream() inline
helpers to retrieve a haload stream context (struct hastream) from
a stream connector.

These functions allow the stconn layer to safely access haload-specific
stream data when the application type is OBJ_TYPE_HXLOAD.

include/haproxy/stconn.h

index 68146b9992c18e64fc36825406ff015eaa326aa9..7c6d3b5537112c083b6e3ae2b9a880b8104818eb 100644 (file)
@@ -25,6 +25,7 @@
 #include <haproxy/api.h>
 #include <haproxy/connection.h>
 #include <haproxy/hstream-t.h>
+#include <haproxy/hldstream-t.h>
 #include <haproxy/htx-t.h>
 #include <haproxy/obj_type.h>
 #include <haproxy/stconn-t.h>
@@ -350,6 +351,21 @@ static inline struct hstream *sc_hstream(const struct stconn *sc)
        return NULL;
 }
 
+/* Returns the haload stream from a sc if the application is a
+ * haload stream. Otherwise NULL is returned. __sc_hldstream() returns the haterm
+ * stream without any control while sc_hldstream() check the application type.
+ */
+static inline struct hldstream *__sc_hldstream(const struct stconn *sc)
+{
+       return __objt_hldstream(sc->app);
+}
+static inline struct hldstream *sc_hldstream(const struct stconn *sc)
+{
+       if (obj_type(sc->app) == OBJ_TYPE_HALOAD)
+               return __objt_hldstream(sc->app);
+       return NULL;
+}
+
 /* Returns non-zero if the stream connector's Rx path is blocked because of
  * lack of room in the input buffer. This usually happens after applets failed
  * to deliver data into the channel's buffer and reported it via sc_need_room().