Supported in default-server: No
+agent-send <string>
+ If this option is specified, haproxy will send the given string (verbatim)
+ to the agent server upon connection. You could, for example, encode
+ the backend name into this string, which would enable your agent to send
+ different responses based on the backend. Make sure to include a '\n' if
+ you want to terminate your request with a newline.
+
agent-inter <delay>
The "agent-inter" parameter sets the interval between two agent checks
to <delay> milliseconds. If left unspecified, the delay defaults to 2000 ms.
* rise to rise+fall-1 = good */
int rise, fall; /* time in iterations */
int type; /* Check type, one of PR_O2_*_CHK */
+ char *send_string; /* optionally send a string when connecting to the agent */
+ int send_string_len; /* length of agent command string */
struct server *server; /* back-pointer to server */
char **argv; /* the arguments to use if running a process-based check */
char **envp; /* the environment to use if running a process-based check */
}
}
+ if ((check->type & PR_O2_LB_AGENT_CHK) && check->send_string_len) {
+ bo_putblk(check->bo, check->send_string, check->send_string_len);
+ }
+
/* prepare a new connection */
conn_init(conn);
free(s->check.bo);
free(s->agent.bi);
free(s->agent.bo);
+ free(s->agent.send_string);
free((char*)s->conf.file);
#ifdef USE_OPENSSL
if (s->use_ssl || s->check.use_ssl)
newsrv->check.downinter = curproxy->defsrv.check.downinter;
newsrv->agent.use_ssl = curproxy->defsrv.agent.use_ssl;
newsrv->agent.port = curproxy->defsrv.agent.port;
+ if (curproxy->defsrv.agent.send_string != NULL)
+ newsrv->agent.send_string = strdup(curproxy->defsrv.agent.send_string);
+ newsrv->agent.send_string_len = curproxy->defsrv.agent.send_string_len;
newsrv->agent.inter = curproxy->defsrv.agent.inter;
newsrv->agent.fastinter = curproxy->defsrv.agent.fastinter;
newsrv->agent.downinter = curproxy->defsrv.agent.downinter;
newsrv->agent.port = atol(args[cur_arg + 1]);
cur_arg += 2;
}
+ else if (!strcmp(args[cur_arg], "agent-send")) {
+ global.maxsock++;
+ free(newsrv->agent.send_string);
+ newsrv->agent.send_string_len = strlen(args[cur_arg + 1]);
+ newsrv->agent.send_string = calloc(1, newsrv->agent.send_string_len + 1);
+ memcpy(newsrv->agent.send_string, args[cur_arg + 1], newsrv->agent.send_string_len);
+ cur_arg += 2;
+ }
else if (!defsrv && !strcmp(args[cur_arg], "cookie")) {
newsrv->cookie = strdup(args[cur_arg + 1]);
newsrv->cklen = strlen(args[cur_arg + 1]);