#define APPCTX_FL_INBLK_FULL 0x00000002
#define APPCTX_FL_OUTBLK_ALLOC 0x00000004
#define APPCTX_FL_OUTBLK_FULL 0x00000008
+#define APPCTX_FL_EOI 0x00000010
+#define APPCTX_FL_EOS 0x00000020
+#define APPCTX_FL_ERR_PENDING 0x00000040
+#define APPCTX_FL_ERROR 0x00000080
struct appctx;
struct proxy;
static forceinline void applet_fl_set(struct appctx *appctx, uint on)
{
+ if (((on & (APPCTX_FL_EOS|APPCTX_FL_EOI)) && appctx->flags & APPCTX_FL_ERR_PENDING) ||
+ ((on & APPCTX_FL_ERR_PENDING) && appctx->flags & (APPCTX_FL_EOI|APPCTX_FL_EOS)))
+ on |= APPCTX_FL_ERROR;
appctx->flags |= on;
}
return appctx->flags;
}
+static inline void applet_set_eoi(struct appctx *appctx)
+{
+ applet_fl_set(appctx, APPCTX_FL_EOI);
+}
+
+static inline void applet_set_eos(struct appctx *appctx)
+{
+ applet_fl_set(appctx, APPCTX_FL_EOS);
+}
+
+static inline void applet_set_error(struct appctx *appctx)
+{
+ if (applet_fl_test(appctx, (APPCTX_FL_EOS|APPCTX_FL_EOI)))
+ applet_fl_set(appctx, APPCTX_FL_ERROR);
+ else
+ applet_fl_set(appctx, APPCTX_FL_ERR_PENDING);
+}
+
/* The applet announces it has more data to deliver to the stream's input
* buffer.
*/