]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[REORG] stream_interface: move the st0, st1 and private members to the applet
authorWilly Tarreau <w@1wt.eu>
Sun, 13 Feb 2011 12:25:14 +0000 (13:25 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 10 Mar 2011 22:32:14 +0000 (23:32 +0100)
Those fields are only used by the applets, so let's move them to the
struct.

include/types/stream_interface.h
src/dumpstats.c
src/peers.c
src/proto_http.c

index 6af0f63d672bb4936343c1b256c94f3612fbdb29..04f6bcc2f495b9b8b8b0fa2e9b62e22bde93a8a6 100644 (file)
@@ -105,9 +105,9 @@ struct stream_interface {
        void *err_loc;          /* commonly the server, NULL when SI_ET_NONE */
        struct {
                struct si_applet *handler; /* applet to use instead of doing I/O */
+               void *private;             /* may be used by any function above */
+               unsigned int st0, st1;     /* may be used by any function above */
        } applet;
-       void *private;          /* may be used by any function above */
-       unsigned int st0, st1;  /* may be used by any function above */
 };
 
 /* An applet designed to run in a stream interface */
index 2630eed9a41f7594bd12ae98880a2de3b6b8a5d0..c24c1ef237c833d3900b3758ffa3dc9547200220 100644 (file)
@@ -85,9 +85,9 @@ int stats_accept(struct session *s)
 {
        /* we have a dedicated I/O handler for the stats */
        stream_int_register_handler(&s->si[1], &cli_applet);
-       s->si[1].private = s;
-       s->si[1].st1 = 0;
-       s->si[1].st0 = STAT_CLI_INIT;
+       s->si[1].applet.private = s;
+       s->si[1].applet.st1 = 0;
+       s->si[1].applet.st0 = STAT_CLI_INIT;
 
        tv_zero(&s->logs.tv_request);
        s->logs.t_queue = 0;
@@ -316,13 +316,13 @@ int print_csv_header(struct chunk *msg)
 
 /* Processes the stats interpreter on the statistics socket. This function is
  * called from an applet running in a stream interface. The function returns 1
- * if the request was understood, otherwise zero. It sets si->st0 to a value
+ * if the request was understood, otherwise zero. It sets si->applet.st0 to a value
  * designating the function which will have to process the request, which can
  * also be the print function to display the return message set into cli.msg.
  */
 int stats_sock_parse_request(struct stream_interface *si, char *line)
 {
-       struct session *s = si->private;
+       struct session *s = si->applet.private;
        char *args[MAX_STATS_ARGS + 1];
        int arg;
 
@@ -362,19 +362,19 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                        s->data_ctx.stats.flags |= STAT_SHOW_STAT;
                        s->data_ctx.stats.flags |= STAT_FMT_CSV;
                        s->data_state = DATA_ST_INIT;
-                       si->st0 = STAT_CLI_O_INFO; // stats_dump_raw_to_buffer
+                       si->applet.st0 = STAT_CLI_O_INFO; // stats_dump_raw_to_buffer
                }
                else if (strcmp(args[1], "info") == 0) {
                        s->data_ctx.stats.flags |= STAT_SHOW_INFO;
                        s->data_ctx.stats.flags |= STAT_FMT_CSV;
                        s->data_state = DATA_ST_INIT;
-                       si->st0 = STAT_CLI_O_INFO; // stats_dump_raw_to_buffer
+                       si->applet.st0 = STAT_CLI_O_INFO; // stats_dump_raw_to_buffer
                }
                else if (strcmp(args[1], "sess") == 0) {
                        s->data_state = DATA_ST_INIT;
                        if (s->listener->perm.ux.level < ACCESS_LVL_OPER) {
                                s->data_ctx.cli.msg = stats_permission_denied_msg;
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
                        if (*args[2])
@@ -383,12 +383,12 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                                s->data_ctx.sess.target = NULL;
                        s->data_ctx.sess.section = 0; /* start with session status */
                        s->data_ctx.sess.pos = 0;
-                       si->st0 = STAT_CLI_O_SESS; // stats_dump_sess_to_buffer
+                       si->applet.st0 = STAT_CLI_O_SESS; // stats_dump_sess_to_buffer
                }
                else if (strcmp(args[1], "errors") == 0) {
                        if (s->listener->perm.ux.level < ACCESS_LVL_OPER) {
                                s->data_ctx.cli.msg = stats_permission_denied_msg;
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
                        if (*args[2])
@@ -397,7 +397,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                                s->data_ctx.errors.iid  = -1;
                        s->data_ctx.errors.px = NULL;
                        s->data_state = DATA_ST_INIT;
-                       si->st0 = STAT_CLI_O_ERR; // stats_dump_errors_to_buffer
+                       si->applet.st0 = STAT_CLI_O_ERR; // stats_dump_errors_to_buffer
                }
                else if (strcmp(args[1], "table") == 0) {
                        s->data_state = DATA_ST_INIT;
@@ -405,7 +405,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                                s->data_ctx.table.target = find_stktable(args[2]);
                                if (!s->data_ctx.table.target) {
                                        s->data_ctx.cli.msg = "No such table\n";
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                        return 1;
                                }
                        }
@@ -418,38 +418,38 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                                s->data_ctx.table.data_type = stktable_get_data_type(args[3] + 5);
                                if (s->data_ctx.table.data_type < 0) {
                                        s->data_ctx.cli.msg = "Unknown data type\n";
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                        return 1;
                                }
 
                                if (!((struct proxy *)s->data_ctx.table.target)->table.data_ofs[s->data_ctx.table.data_type]) {
                                        s->data_ctx.cli.msg = "Data type not stored in this table\n";
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                        return 1;
                                }
 
                                s->data_ctx.table.data_op = get_std_op(args[4]);
                                if (s->data_ctx.table.data_op < 0) {
                                        s->data_ctx.cli.msg = "Require and operator among \"eq\", \"ne\", \"le\", \"ge\", \"lt\", \"gt\"\n";
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                        return 1;
                                }
 
                                if (!*args[5] || strl2llrc(args[5], strlen(args[5]), &s->data_ctx.table.value) != 0) {
                                        s->data_ctx.cli.msg = "Require a valid integer value to compare against\n";
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                        return 1;
                                }
                        }
                        else if (*args[3]) {
                                s->data_ctx.cli.msg = "Optional argument only supports \"data.<store_data_type>\" <operator> <value>\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        s->data_ctx.table.proxy = NULL;
                        s->data_ctx.table.entry = NULL;
-                       si->st0 = STAT_CLI_O_TAB; // stats_dump_table_to_buffer
+                       si->applet.st0 = STAT_CLI_O_TAB; // stats_dump_table_to_buffer
                }
                else { /* neither "stat" nor "info" nor "sess" nor "errors" no "table" */
                        return 0;
@@ -469,7 +469,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                        if (s->listener->perm.ux.level < ACCESS_LVL_OPER ||
                            (clrall && s->listener->perm.ux.level < ACCESS_LVL_ADMIN)) {
                                s->data_ctx.cli.msg = stats_permission_denied_msg;
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -513,7 +513,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                        if (!*args[2]) {
                                s->data_ctx.cli.msg = "\"table\" argument expected\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -521,19 +521,19 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                        if (!px) {
                                s->data_ctx.cli.msg = "No such table\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        if (strcmp(args[3], "key") != 0) {
                                s->data_ctx.cli.msg = "\"key\" argument expected\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        if (!*args[4]) {
                                s->data_ctx.cli.msg = "Key value expected\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -543,14 +543,14 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                        }
                        else {
                                s->data_ctx.cli.msg = "Removing keys from non-ip tables is not supported\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        /* check permissions */
                        if (s->listener->perm.ux.level < ACCESS_LVL_OPER) {
                                s->data_ctx.cli.msg = stats_permission_denied_msg;
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -562,7 +562,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                        else if (ts->ref_cnt) {
                                /* don't delete an entry which is currently referenced */
                                s->data_ctx.cli.msg = "Entry currently in use, cannot remove\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -589,13 +589,13 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                        if (!*line) {
                                s->data_ctx.cli.msg = "Require 'backend/server'.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        if (!get_backend_server(args[2], line, &px, &sv)) {
                                s->data_ctx.cli.msg = px ? "No such server.\n" : "No such backend.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -616,7 +616,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                        if (s->listener->perm.ux.level < ACCESS_LVL_ADMIN) {
                                s->data_ctx.cli.msg = stats_permission_denied_msg;
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -629,19 +629,19 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                        if (!*line || !*args[3]) {
                                s->data_ctx.cli.msg = "Require 'backend/server' and 'weight' or 'weight%'.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        if (!get_backend_server(args[2], line, &px, &sv)) {
                                s->data_ctx.cli.msg = px ? "No such server.\n" : "No such backend.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        if (px->state == PR_STSTOPPED) {
                                s->data_ctx.cli.msg = "Proxy is disabled.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -652,7 +652,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                        if (strchr(args[3], '%') != NULL) {
                                if (w < 0 || w > 100) {
                                        s->data_ctx.cli.msg = "Relative weight can only be set between 0 and 100% inclusive.\n";
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                        return 1;
                                }
                                w = sv->iweight * w / 100;
@@ -660,14 +660,14 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                        else {
                                if (w < 0 || w > 256) {
                                        s->data_ctx.cli.msg = "Absolute weight can only be between 0 and 256 inclusive.\n";
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                        return 1;
                                }
                        }
 
                        if (w && w != sv->iweight && !(px->lbprm.algo & BE_LB_PROP_DYN)) {
                                s->data_ctx.cli.msg = "Backend is using a static LB algorithm and only accepts weights '0%' and '100%'.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -701,14 +701,14 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                                if (!*args[3]) {
                                        s->data_ctx.cli.msg = "Expects an integer value.\n";
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                        return 1;
                                }
 
                                res = parse_time_err(args[3], &timeout, TIME_UNIT_S);
                                if (res || timeout < 1) {
                                        s->data_ctx.cli.msg = "Invalid timeout value.\n";
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                        return 1;
                                }
 
@@ -717,7 +717,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                        }
                        else {
                                s->data_ctx.cli.msg = "'set timeout' only supports 'cli'.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
                }
@@ -732,7 +732,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                        if (s->listener->perm.ux.level < ACCESS_LVL_ADMIN) {
                                s->data_ctx.cli.msg = stats_permission_denied_msg;
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -745,19 +745,19 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                        if (!*line || !*args[2]) {
                                s->data_ctx.cli.msg = "Require 'backend/server'.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        if (!get_backend_server(args[2], line, &px, &sv)) {
                                s->data_ctx.cli.msg = px ? "No such server.\n" : "No such backend.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        if (px->state == PR_STSTOPPED) {
                                s->data_ctx.cli.msg = "Proxy is disabled.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -793,7 +793,7 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                        if (s->listener->perm.ux.level < ACCESS_LVL_ADMIN) {
                                s->data_ctx.cli.msg = stats_permission_denied_msg;
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -806,19 +806,19 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
 
                        if (!*line || !*args[2]) {
                                s->data_ctx.cli.msg = "Require 'backend/server'.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        if (!get_backend_server(args[2], line, &px, &sv)) {
                                s->data_ctx.cli.msg = px ? "No such server.\n" : "No such backend.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
                        if (px->state == PR_STSTOPPED) {
                                s->data_ctx.cli.msg = "Proxy is disabled.\n";
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                                return 1;
                        }
 
@@ -844,13 +844,13 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
  * used to processes I/O from/to the stats unix socket. The system relies on a
  * state machine handling requests and various responses. We read a request,
  * then we process it and send the response, and we possibly display a prompt.
- * Then we can read again. The state is stored in si->st0 and is one of the
- * STAT_CLI_* constants. si->st1 is used to indicate whether prompt is enabled
+ * Then we can read again. The state is stored in si->applet.st0 and is one of the
+ * STAT_CLI_* constants. si->applet.st1 is used to indicate whether prompt is enabled
  * or not.
  */
 static void cli_io_handler(struct stream_interface *si)
 {
-       struct session *s = si->private;
+       struct session *s = si->applet.private;
        struct buffer *req = si->ob;
        struct buffer *res = si->ib;
        int reql;
@@ -860,20 +860,20 @@ static void cli_io_handler(struct stream_interface *si)
                goto out;
 
        while (1) {
-               if (si->st0 == STAT_CLI_INIT) {
+               if (si->applet.st0 == STAT_CLI_INIT) {
                        /* Stats output not initialized yet */
                        memset(&s->data_ctx.stats, 0, sizeof(s->data_ctx.stats));
                        s->data_source = DATA_SRC_STATS;
-                       si->st0 = STAT_CLI_GETREQ;
+                       si->applet.st0 = STAT_CLI_GETREQ;
                }
-               else if (si->st0 == STAT_CLI_END) {
+               else if (si->applet.st0 == STAT_CLI_END) {
                        /* Let's close for real now. We just close the request
                         * side, the conditions below will complete if needed.
                         */
                        si->shutw(si);
                        break;
                }
-               else if (si->st0 == STAT_CLI_GETREQ) {
+               else if (si->applet.st0 == STAT_CLI_GETREQ) {
                        /* ensure we have some output room left in the event we
                         * would want to return some info right after parsing.
                         */
@@ -884,7 +884,7 @@ static void cli_io_handler(struct stream_interface *si)
                        if (reql <= 0) { /* closed or EOL not found */
                                if (reql == 0)
                                        break;
-                               si->st0 = STAT_CLI_END;
+                               si->applet.st0 = STAT_CLI_END;
                                continue;
                        }
 
@@ -904,7 +904,7 @@ static void cli_io_handler(struct stream_interface *si)
                         */
                        len = reql - 1;
                        if (trash[len] != '\n') {
-                               si->st0 = STAT_CLI_END;
+                               si->applet.st0 = STAT_CLI_END;
                                continue;
                        }
 
@@ -913,30 +913,30 @@ static void cli_io_handler(struct stream_interface *si)
 
                        trash[len] = '\0';
 
-                       si->st0 = STAT_CLI_PROMPT;
+                       si->applet.st0 = STAT_CLI_PROMPT;
                        if (len) {
                                if (strcmp(trash, "quit") == 0) {
-                                       si->st0 = STAT_CLI_END;
+                                       si->applet.st0 = STAT_CLI_END;
                                        continue;
                                }
                                else if (strcmp(trash, "prompt") == 0)
-                                       si->st1 = !si->st1;
+                                       si->applet.st1 = !si->applet.st1;
                                else if (strcmp(trash, "help") == 0 ||
                                         !stats_sock_parse_request(si, trash)) {
                                        s->data_ctx.cli.msg = stats_sock_usage_msg;
-                                       si->st0 = STAT_CLI_PRINT;
+                                       si->applet.st0 = STAT_CLI_PRINT;
                                }
                                /* NB: stats_sock_parse_request() may have put
-                                * another STAT_CLI_O_* into si->st0.
+                                * another STAT_CLI_O_* into si->applet.st0.
                                 */
                        }
-                       else if (!si->st1) {
+                       else if (!si->applet.st1) {
                                /* if prompt is disabled, print help on empty lines,
                                 * so that the user at least knows how to enable
                                 * prompt and find help.
                                 */
                                s->data_ctx.cli.msg = stats_sock_usage_msg;
-                               si->st0 = STAT_CLI_PRINT;
+                               si->applet.st0 = STAT_CLI_PRINT;
                        }
 
                        /* re-adjust req buffer */
@@ -945,44 +945,44 @@ static void cli_io_handler(struct stream_interface *si)
                }
                else {  /* output functions: first check if the output buffer is closed then abort */
                        if (res->flags & (BF_SHUTR_NOW|BF_SHUTR)) {
-                               si->st0 = STAT_CLI_END;
+                               si->applet.st0 = STAT_CLI_END;
                                continue;
                        }
 
-                       switch (si->st0) {
+                       switch (si->applet.st0) {
                        case STAT_CLI_PRINT:
                                if (buffer_feed(si->ib, s->data_ctx.cli.msg) < 0)
-                                       si->st0 = STAT_CLI_PROMPT;
+                                       si->applet.st0 = STAT_CLI_PROMPT;
                                break;
                        case STAT_CLI_O_INFO:
                                if (stats_dump_raw_to_buffer(s, res))
-                                       si->st0 = STAT_CLI_PROMPT;
+                                       si->applet.st0 = STAT_CLI_PROMPT;
                                break;
                        case STAT_CLI_O_SESS:
                                if (stats_dump_sess_to_buffer(s, res))
-                                       si->st0 = STAT_CLI_PROMPT;
+                                       si->applet.st0 = STAT_CLI_PROMPT;
                                break;
                        case STAT_CLI_O_ERR:    /* errors dump */
                                if (stats_dump_errors_to_buffer(s, res))
-                                       si->st0 = STAT_CLI_PROMPT;
+                                       si->applet.st0 = STAT_CLI_PROMPT;
                                break;
                        case STAT_CLI_O_TAB:
                                if (stats_dump_table_to_buffer(s, res))
-                                       si->st0 = STAT_CLI_PROMPT;
+                                       si->applet.st0 = STAT_CLI_PROMPT;
                                break;
                        default: /* abnormal state */
-                               si->st0 = STAT_CLI_PROMPT;
+                               si->applet.st0 = STAT_CLI_PROMPT;
                                break;
                        }
 
                        /* The post-command prompt is either LF alone or LF + '> ' in interactive mode */
-                       if (si->st0 == STAT_CLI_PROMPT) {
-                               if (buffer_feed(si->ib, si->st1 ? "\n> " : "\n") < 0)
-                                       si->st0 = STAT_CLI_GETREQ;
+                       if (si->applet.st0 == STAT_CLI_PROMPT) {
+                               if (buffer_feed(si->ib, si->applet.st1 ? "\n> " : "\n") < 0)
+                                       si->applet.st0 = STAT_CLI_GETREQ;
                        }
 
                        /* If the output functions are still there, it means they require more room. */
-                       if (si->st0 >= STAT_CLI_OUTPUT)
+                       if (si->applet.st0 >= STAT_CLI_OUTPUT)
                                break;
 
                        /* Now we close the output if one of the writers did so,
@@ -990,17 +990,17 @@ static void cli_io_handler(struct stream_interface *si)
                         * buffer is empty. This still allows pipelined requests
                         * to be sent in non-interactive mode.
                         */
-                       if ((res->flags & (BF_SHUTW|BF_SHUTW_NOW)) || (!si->st1 && !req->send_max)) {
-                               si->st0 = STAT_CLI_END;
+                       if ((res->flags & (BF_SHUTW|BF_SHUTW_NOW)) || (!si->applet.st1 && !req->send_max)) {
+                               si->applet.st0 = STAT_CLI_END;
                                continue;
                        }
 
                        /* switch state back to GETREQ to read next requests */
-                       si->st0 = STAT_CLI_GETREQ;
+                       si->applet.st0 = STAT_CLI_GETREQ;
                }
        }
 
-       if ((res->flags & BF_SHUTR) && (si->state == SI_ST_EST) && (si->st0 != STAT_CLI_GETREQ)) {
+       if ((res->flags & BF_SHUTR) && (si->state == SI_ST_EST) && (si->applet.st0 != STAT_CLI_GETREQ)) {
                DPRINTF(stderr, "%s@%d: si to buf closed. req=%08x, res=%08x, st=%d\n",
                        __FUNCTION__, __LINE__, req->flags, res->flags, si->state);
                /* Other size has closed, let's abort if we have no more processing to do
@@ -1011,7 +1011,7 @@ static void cli_io_handler(struct stream_interface *si)
                si->shutw(si);
        }
 
-       if ((req->flags & BF_SHUTW) && (si->state == SI_ST_EST) && (si->st0 < STAT_CLI_OUTPUT)) {
+       if ((req->flags & BF_SHUTW) && (si->state == SI_ST_EST) && (si->applet.st0 < STAT_CLI_OUTPUT)) {
                DPRINTF(stderr, "%s@%d: buf to si closed. req=%08x, res=%08x, st=%d\n",
                        __FUNCTION__, __LINE__, req->flags, res->flags, si->state);
                /* We have no more processing to do, and nothing more to send, and
@@ -1197,12 +1197,12 @@ int stats_http_redir(struct session *s, struct buffer *rep, struct uri_auth *uri
 
 /* This I/O handler runs as an applet embedded in a stream interface. It is
  * used to send HTTP stats over a TCP socket. The mechanism is very simple.
- * si->st0 becomes non-zero once the transfer is finished. The handler
+ * si->applet.st0 becomes non-zero once the transfer is finished. The handler
  * automatically unregisters itself once transfer is complete.
  */
 static void http_stats_io_handler(struct stream_interface *si)
 {
-       struct session *s = si->private;
+       struct session *s = si->applet.private;
        struct buffer *req = si->ob;
        struct buffer *res = si->ib;
 
@@ -1211,17 +1211,17 @@ static void http_stats_io_handler(struct stream_interface *si)
 
        /* check that the output is not closed */
        if (res->flags & (BF_SHUTW|BF_SHUTW_NOW))
-               si->st0 = 1;
+               si->applet.st0 = 1;
 
-       if (!si->st0) {
+       if (!si->applet.st0) {
                if (s->txn.meth == HTTP_METH_POST) {
                        if (stats_http_redir(s, res, s->be->uri_auth)) {
-                               si->st0 = 1;
+                               si->applet.st0 = 1;
                                si->shutw(si);
                        }
                } else {
                        if (stats_dump_http(s, res, s->be->uri_auth)) {
-                               si->st0 = 1;
+                               si->applet.st0 = 1;
                                si->shutw(si);
                        }
                }
@@ -1230,7 +1230,7 @@ static void http_stats_io_handler(struct stream_interface *si)
        if ((res->flags & BF_SHUTR) && (si->state == SI_ST_EST))
                si->shutw(si);
 
-       if ((req->flags & BF_SHUTW) && (si->state == SI_ST_EST) && si->st0) {
+       if ((req->flags & BF_SHUTW) && (si->state == SI_ST_EST) && si->applet.st0) {
                si->shutr(si);
                res->flags |= BF_READ_NULL;
        }
index 39f4a359b78f4d0de457dad05520628763989812..a3f1ab30965b88e13b67c69b3cd01af6c538ce44 100644 (file)
@@ -186,10 +186,10 @@ void peer_session_release(struct stream_interface *si)
 {
        struct task *t= (struct task *)si->owner;
        struct session *s = (struct session *)t->context;
-       struct peer_session *ps = (struct peer_session *)si->private;
+       struct peer_session *ps = (struct peer_session *)si->applet.private;
 
-       /* si->private is not a peer session */
-       if (si->st0 < PEER_SESSION_SENDSUCCESS)
+       /* si->applet.private is not a peer session */
+       if (si->applet.st0 < PEER_SESSION_SENDSUCCESS)
                return;
 
        /* peer session identified */
@@ -226,21 +226,21 @@ static void peer_io_handler(struct stream_interface *si)
 
        while (1) {
 switchstate:
-               switch(si->st0) {
+               switch(si->applet.st0) {
                        case PEER_SESSION_ACCEPT:
-                               si->private = NULL;
-                               si->st0 = PEER_SESSION_GETVERSION;
+                               si->applet.private = NULL;
+                               si->applet.st0 = PEER_SESSION_GETVERSION;
                                /* fall through */
                        case PEER_SESSION_GETVERSION:
                                reql = buffer_get_line(si->ob, trash, sizeof(trash));
                                if (reql <= 0) { /* closed or EOL not found */
                                        if (reql == 0)
                                                goto out;
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                if (trash[reql-1] != '\n') {
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                else if (reql > 1 && (trash[reql-2] == '\r'))
@@ -252,26 +252,26 @@ switchstate:
 
                                /* test version */
                                if (strcmp(PEER_SESSION_PROTO_NAME " 1.0", trash) != 0) {
-                                       si->st0 = PEER_SESSION_EXIT;
-                                       si->st1 = PEER_SESSION_ERRVERSION;
+                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                       si->applet.st1 = PEER_SESSION_ERRVERSION;
                                        /* test protocol */
                                        if (strncmp(PEER_SESSION_PROTO_NAME " ", trash, strlen(PEER_SESSION_PROTO_NAME)+1) != 0)
-                                               si->st1 = PEER_SESSION_ERRPROTO;
+                                               si->applet.st1 = PEER_SESSION_ERRPROTO;
                                        goto switchstate;
                                }
 
-                               si->st0 = PEER_SESSION_GETHOST;
+                               si->applet.st0 = PEER_SESSION_GETHOST;
                                /* fall through */
                        case PEER_SESSION_GETHOST:
                                reql = buffer_get_line(si->ob, trash, sizeof(trash));
                                if (reql <= 0) { /* closed or EOL not found */
                                        if (reql == 0)
                                                goto out;
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                if (trash[reql-1] != '\n') {
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                else if (reql > 1 && (trash[reql-2] == '\r'))
@@ -283,12 +283,12 @@ switchstate:
 
                                /* test hostname match */
                                if (strcmp(localpeer, trash) != 0) {
-                                       si->st0 = PEER_SESSION_EXIT;
-                                       si->st1 = PEER_SESSION_ERRHOST;
+                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                       si->applet.st1 = PEER_SESSION_ERRHOST;
                                        goto switchstate;
                                }
 
-                               si->st0 = PEER_SESSION_GETPEER;
+                               si->applet.st0 = PEER_SESSION_GETPEER;
                                /* fall through */
                        case PEER_SESSION_GETPEER: {
                                struct peer *curpeer;
@@ -297,12 +297,12 @@ switchstate:
                                if (reql <= 0) { /* closed or EOL not found */
                                        if (reql == 0)
                                                goto out;
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                if (trash[reql-1] != '\n') {
                                        /* Incomplete line, we quit */
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                else if (reql > 1 && (trash[reql-2] == '\r'))
@@ -315,8 +315,8 @@ switchstate:
                                /* parse line "<peer name> <pid>" */
                                p = strchr(trash, ' ');
                                if (!p) {
-                                       si->st0 = PEER_SESSION_EXIT;
-                                       si->st1 = PEER_SESSION_ERRPROTO;
+                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                       si->applet.st1 = PEER_SESSION_ERRPROTO;
                                        goto switchstate;
                                }
                                *p = 0;
@@ -329,17 +329,17 @@ switchstate:
 
                                /* if unknown peer */
                                if (!curpeer) {
-                                       si->st0 = PEER_SESSION_EXIT;
-                                       si->st1 = PEER_SESSION_ERRPEER;
+                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                       si->applet.st1 = PEER_SESSION_ERRPEER;
                                        goto switchstate;
                                }
 
-                               si->private = curpeer;
-                               si->st0 = PEER_SESSION_GETTABLE;
+                               si->applet.private = curpeer;
+                               si->applet.st0 = PEER_SESSION_GETTABLE;
                                /* fall through */
                        }
                        case PEER_SESSION_GETTABLE: {
-                               struct peer *curpeer = (struct peer *)si->private;
+                               struct peer *curpeer = (struct peer *)si->applet.private;
                                struct shared_table *st;
                                struct peer_session *ps = NULL;
                                unsigned long key_type;
@@ -350,16 +350,16 @@ switchstate:
                                if (reql <= 0) { /* closed or EOL not found */
                                        if (reql == 0)
                                                goto out;
-                                       si->private = NULL;
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.private = NULL;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
-                               /* Re init si->private to null, to handle correctly a release case */
-                               si->private = NULL;
+                               /* Re init si->applet.private to null, to handle correctly a release case */
+                               si->applet.private = NULL;
 
                                if (trash[reql-1] != '\n') {
                                        /* Incomplete line, we quit */
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                else if (reql > 1 && (trash[reql-2] == '\r'))
@@ -372,8 +372,8 @@ switchstate:
                                /* Parse line "<table name> <type> <size>" */
                                p = strchr(trash, ' ');
                                if (!p) {
-                                       si->st0 = PEER_SESSION_EXIT;
-                                       si->st1 = PEER_SESSION_ERRPROTO;
+                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                       si->applet.st1 = PEER_SESSION_ERRPROTO;
                                        goto switchstate;
                                }
                                *p = 0;
@@ -381,9 +381,9 @@ switchstate:
 
                                p = strchr(p+1, ' ');
                                if (!p) {
-                                       si->private = NULL;
-                                       si->st0 = PEER_SESSION_EXIT;
-                                       si->st1 = PEER_SESSION_ERRPROTO;
+                                       si->applet.private = NULL;
+                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                       si->applet.st1 = PEER_SESSION_ERRPROTO;
                                        goto switchstate;
                                }
 
@@ -393,15 +393,15 @@ switchstate:
                                        if (strcmp(st->table->id, trash) == 0) {
                                                /* If key size mismatches */
                                                if (key_size != st->table->key_size) {
-                                                       si->st0 = PEER_SESSION_EXIT;
-                                                       si->st1 = PEER_SESSION_ERRSIZE;
+                                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                                       si->applet.st1 = PEER_SESSION_ERRSIZE;
                                                        goto switchstate;
                                                }
 
                                                /* If key type mismatches */
                                                if (key_type != st->table->type) {
-                                                       si->st0 = PEER_SESSION_EXIT;
-                                                       si->st1 = PEER_SESSION_ERRTYPE;
+                                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                                       si->applet.st1 = PEER_SESSION_ERRTYPE;
                                                        goto switchstate;
                                                }
 
@@ -412,8 +412,8 @@ switchstate:
                                                                if (ps->session && ps->session != s) {
                                                                        if (ps->peer->local) {
                                                                                /* Local connection, reply a retry */
-                                                                               si->st0 = PEER_SESSION_EXIT;
-                                                                               si->st1 = PEER_SESSION_TRYAGAIN;
+                                                                               si->applet.st0 = PEER_SESSION_EXIT;
+                                                                               si->applet.st1 = PEER_SESSION_TRYAGAIN;
                                                                                goto switchstate;
                                                                        }
                                                                        peer_session_forceshutdown(ps->session);
@@ -428,31 +428,31 @@ switchstate:
 
                                /* If table not found */
                                if (!st){
-                                       si->st0 = PEER_SESSION_EXIT;
-                                       si->st1 = PEER_SESSION_ERRTABLE;
+                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                       si->applet.st1 = PEER_SESSION_ERRTABLE;
                                        goto switchstate;
                                }
 
                                /* If no peer session for current peer */
                                if (!ps) {
-                                       si->st0 = PEER_SESSION_EXIT;
-                                       si->st1 = PEER_SESSION_ERRPEER;
+                                       si->applet.st0 = PEER_SESSION_EXIT;
+                                       si->applet.st1 = PEER_SESSION_ERRPEER;
                                        goto switchstate;
                                }
 
-                               si->private = ps;
-                               si->st0 = PEER_SESSION_SENDSUCCESS;
+                               si->applet.private = ps;
+                               si->applet.st0 = PEER_SESSION_SENDSUCCESS;
                                /* fall through */
                        }
                        case PEER_SESSION_SENDSUCCESS:{
-                               struct peer_session *ps = (struct peer_session *)si->private;
+                               struct peer_session *ps = (struct peer_session *)si->applet.private;
 
                                repl = snprintf(trash, sizeof(trash), "%d\n", PEER_SESSION_SUCCESSCODE);
                                repl = buffer_put_block(si->ib, trash, repl);
                                if (repl <= 0) {
                                        if (repl == -1)
                                                goto out;
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
 
@@ -491,11 +491,11 @@ switchstate:
                                        ps->table->flags |= SHTABLE_F_RESYNC_ASSIGN;
                                }
                                /* switch to waiting message state */
-                               si->st0 = PEER_SESSION_WAITMSG;
+                               si->applet.st0 = PEER_SESSION_WAITMSG;
                                goto switchstate;
                        }
                        case PEER_SESSION_CONNECT: {
-                               struct peer_session *ps = (struct peer_session *)si->private;
+                               struct peer_session *ps = (struct peer_session *)si->applet.private;
 
                                /* Send headers */
                                repl = snprintf(trash, sizeof(trash),
@@ -508,7 +508,7 @@ switchstate:
                                                (int)ps->table->table->key_size);
 
                                if (repl >= sizeof(trash)) {
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
 
@@ -516,16 +516,16 @@ switchstate:
                                if (repl <= 0) {
                                        if (repl == -1)
                                                goto out;
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
 
                                /* switch to the waiting statuscode state */
-                               si->st0 = PEER_SESSION_GETSTATUS;
+                               si->applet.st0 = PEER_SESSION_GETSTATUS;
                                /* fall through */
                        }
                        case PEER_SESSION_GETSTATUS: {
-                               struct peer_session *ps = (struct peer_session *)si->private;
+                               struct peer_session *ps = (struct peer_session *)si->applet.private;
 
                                if (si->ib->flags & BF_WRITE_PARTIAL)
                                        ps->statuscode = PEER_SESSION_CONNECTEDCODE;
@@ -534,12 +534,12 @@ switchstate:
                                if (reql <= 0) { /* closed or EOL not found */
                                        if (reql == 0)
                                                goto out;
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                if (trash[reql-1] != '\n') {
                                        /* Incomplete line, we quit */
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                else if (reql > 1 && (trash[reql-2] == '\r'))
@@ -589,14 +589,14 @@ switchstate:
                                }
                                else {
                                        /* Status code is not success, abort */
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
-                               si->st0 = PEER_SESSION_WAITMSG;
+                               si->applet.st0 = PEER_SESSION_WAITMSG;
                                /* fall through */
                        }
                        case PEER_SESSION_WAITMSG: {
-                               struct peer_session *ps = (struct peer_session *)si->private;
+                               struct peer_session *ps = (struct peer_session *)si->applet.private;
                                char c;
                                int totl = 0;
 
@@ -606,7 +606,7 @@ switchstate:
                                                /* nothing to read */
                                                goto incomplete;
                                        }
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
                                totl += reql;
@@ -630,7 +630,7 @@ switchstate:
                                                        if (reql == 0) {
                                                                goto incomplete;
                                                        }
-                                                       si->st0 = PEER_SESSION_END;
+                                                       si->applet.st0 = PEER_SESSION_END;
                                                        goto switchstate;
                                                }
                                                totl += reql;
@@ -647,7 +647,7 @@ switchstate:
                                                        if (reql == 0) {
                                                                goto incomplete;
                                                        }
-                                                       si->st0 = PEER_SESSION_END;
+                                                       si->applet.st0 = PEER_SESSION_END;
                                                        goto switchstate;
                                                }
                                                totl += reql;
@@ -658,7 +658,7 @@ switchstate:
                                                        if (reql == 0) {
                                                                goto incomplete;
                                                        }
-                                                       si->st0 = PEER_SESSION_END;
+                                                       si->applet.st0 = PEER_SESSION_END;
                                                        goto switchstate;
                                                }
                                                totl += reql;
@@ -673,7 +673,7 @@ switchstate:
                                                        if (reql == 0) {
                                                                goto incomplete;
                                                        }
-                                                       si->st0 = PEER_SESSION_END;
+                                                       si->applet.st0 = PEER_SESSION_END;
                                                        goto switchstate;
                                                }
                                                totl += reql;
@@ -689,7 +689,7 @@ switchstate:
                                                        if (reql == 0) {
                                                                goto incomplete;
                                                        }
-                                                       si->st0 = PEER_SESSION_END;
+                                                       si->applet.st0 = PEER_SESSION_END;
                                                        goto switchstate;
                                                }
                                                totl += reql;
@@ -702,7 +702,7 @@ switchstate:
                                                if (reql == 0) {
                                                        goto incomplete;
                                                }
-                                               si->st0 = PEER_SESSION_END;
+                                               si->applet.st0 = PEER_SESSION_END;
                                                goto switchstate;
                                        }
                                        totl += reql;
@@ -775,7 +775,7 @@ switchstate:
                                        if (stopping) {
                                                /* Close session, push resync no more needed */
                                                ps->flags |= PEER_F_TEACH_COMPLETE;
-                                               si->st0 = PEER_SESSION_END;
+                                               si->applet.st0 = PEER_SESSION_END;
                                                goto switchstate;
                                        }
 
@@ -811,7 +811,7 @@ switchstate:
                                                if (reql == 0) {
                                                        goto incomplete;
                                                }
-                                               si->st0 = PEER_SESSION_END;
+                                               si->applet.st0 = PEER_SESSION_END;
                                                goto switchstate;
                                        }
                                        totl += reql;
@@ -821,7 +821,7 @@ switchstate:
                                }
                                else {
                                        /* Unknown message */
-                                       si->st0 = PEER_SESSION_END;
+                                       si->applet.st0 = PEER_SESSION_END;
                                        goto switchstate;
                                }
 
@@ -841,7 +841,7 @@ incomplete:
                                                /* no more write possible */
                                                if (repl == -1)
                                                        goto out;
-                                               si->st0 = PEER_SESSION_END;
+                                               si->applet.st0 = PEER_SESSION_END;
                                                goto switchstate;
                                        }
                                        ps->confirm--;
@@ -858,7 +858,7 @@ incomplete:
                                                /* no more write possible */
                                                if (repl == -1)
                                                        goto out;
-                                               si->st0 = PEER_SESSION_END;
+                                               si->applet.st0 = PEER_SESSION_END;
                                                goto switchstate;
                                        }
                                        ps->table->flags |= SHTABLE_F_RESYNC_PROCESS;
@@ -877,7 +877,7 @@ incomplete:
                                                /* no more write possible */
                                                if (repl == -1)
                                                        goto out;
-                                               si->st0 = PEER_SESSION_END;
+                                               si->applet.st0 = PEER_SESSION_END;
                                                goto switchstate;
                                        }
                                        ps->lastack = ps->pushack;
@@ -913,7 +913,7 @@ incomplete:
                                                                        /* no more write possible */
                                                                        if (repl == -1)
                                                                                goto out;
-                                                                       si->st0 = PEER_SESSION_END;
+                                                                       si->applet.st0 = PEER_SESSION_END;
                                                                        goto switchstate;
                                                                }
                                                                ps->lastpush = ps->pushed = ts->upd.key;
@@ -947,7 +947,7 @@ incomplete:
                                                                        /* no more write possible */
                                                                        if (repl == -1)
                                                                                goto out;
-                                                                       si->st0 = PEER_SESSION_END;
+                                                                       si->applet.st0 = PEER_SESSION_END;
                                                                        goto switchstate;
                                                                }
                                                                ps->lastpush = ps->pushed = ts->upd.key;
@@ -963,7 +963,7 @@ incomplete:
                                                        /* no more write possible */
                                                        if (repl == -1)
                                                                goto out;
-                                                       si->st0 = PEER_SESSION_END;
+                                                       si->applet.st0 = PEER_SESSION_END;
                                                        goto switchstate;
                                                }
 
@@ -1005,7 +1005,7 @@ incomplete:
                                                                /* no more write possible */
                                                                if (repl == -1)
                                                                        goto out;
-                                                               si->st0 = PEER_SESSION_END;
+                                                               si->applet.st0 = PEER_SESSION_END;
                                                                goto switchstate;
                                                        }
                                                        ps->lastpush = ps->pushed = ts->upd.key;
@@ -1017,11 +1017,11 @@ incomplete:
                                goto out;
                        }
                        case PEER_SESSION_EXIT:
-                               repl = snprintf(trash, sizeof(trash), "%d\n", si->st1);
+                               repl = snprintf(trash, sizeof(trash), "%d\n", si->applet.st1);
 
                                if (buffer_put_block(si->ib, trash, repl) == -1)
                                        goto out;
-                               si->st0 = PEER_SESSION_END;
+                               si->applet.st0 = PEER_SESSION_END;
                                /* fall through */
                        case PEER_SESSION_END: {
                                si->shutw(si);
@@ -1062,8 +1062,8 @@ void peer_session_forceshutdown(struct session * session)
 
        /* call release to reinit resync states if needed */
        peer_session_release(oldsi);
-       oldsi->st0 = PEER_SESSION_END;
-       oldsi->private = NULL;
+       oldsi->applet.st0 = PEER_SESSION_END;
+       oldsi->applet.private = NULL;
        task_wakeup(session->task, TASK_WOKEN_MSG);
 }
 
@@ -1078,8 +1078,8 @@ int peer_accept(struct session *s)
         /* we have a dedicated I/O handler for the stats */
        stream_int_register_handler(&s->si[1], &peer_applet);
        s->si[1].release = peer_session_release;
-       s->si[1].private = s;
-       s->si[1].st0 = PEER_SESSION_ACCEPT;
+       s->si[1].applet.private = s;
+       s->si[1].applet.st0 = PEER_SESSION_ACCEPT;
 
        tv_zero(&s->logs.tv_request);
        s->logs.t_queue = 0;
@@ -1159,8 +1159,8 @@ struct session *peer_session_create(struct peer *peer, struct peer_session *ps)
        s->si[0].flags = SI_FL_NONE;
        if (s->fe->options2 & PR_O2_INDEPSTR)
                s->si[0].flags |= SI_FL_INDEP_STR;
-       s->si[0].private = (void *)ps;
-       s->si[0].st0 = PEER_SESSION_CONNECT;
+       s->si[0].applet.private = (void *)ps;
+       s->si[0].applet.st0 = PEER_SESSION_CONNECT;
 
        stream_int_register_handler(&s->si[0], &peer_applet);
        s->si[0].release = peer_session_release;
index 5119d372538c5528676fd31bf46526c09a826afb..a0c9b929b6570880157c569c0ed4ad03065b5639 100644 (file)
@@ -3227,8 +3227,8 @@ int http_process_req_common(struct session *s, struct buffer *req, int an_bit, s
                s->data_state  = DATA_ST_INIT;
                s->task->nice = -32; /* small boost for HTTP statistics */
                stream_int_register_handler(s->rep->prod, &http_stats_applet);
-               s->rep->prod->private = s;
-               s->rep->prod->st0 = s->rep->prod->st1 = 0;
+               s->rep->prod->applet.private = s;
+               s->rep->prod->applet.st0 = s->rep->prod->applet.st1 = 0;
                req->analysers = 0;
 
                return 0;