extern int listeners;
extern int jobs; /* # of active jobs */
extern char *trash;
-extern int trashlen;
extern char *swap_buffer;
extern int nb_oldpids; /* contains the number of old pids found */
extern const int zero;
opaque = 0;
pattern = NULL;
args[1] = "";
- while (fgets(trash, trashlen, file) != NULL) {
+ while (fgets(trash, global.tune.bufsize, file) != NULL) {
line++;
c = trash;
global.tune.bufsize = atol(args[1]);
if (global.tune.maxrewrite >= global.tune.bufsize / 2)
global.tune.maxrewrite = global.tune.bufsize / 2;
- trashlen = global.tune.bufsize;
- trash = realloc(trash, trashlen);
+ trash = realloc(trash, global.tune.bufsize);
}
else if (!strcmp(args[0], "tune.maxrewrite")) {
if (*(args[1]) == 0) {
continue;
if (strcmp(kwl->kw[index].kw, args[0]) == 0) {
/* prepare error message just in case */
- snprintf(trash, trashlen,
+ snprintf(trash, global.tune.bufsize,
"error near '%s' in '%s' section", args[0], "global");
rc = kwl->kw[index].parse(args, CFG_GLOBAL, NULL, NULL, file, linenum, &errmsg);
if (rc < 0) {
goto out;
}
- expr = sample_parse_expr(args, &myidx, trash, trashlen);
+ expr = sample_parse_expr(args, &myidx, trash, global.tune.bufsize);
if (!expr) {
Alert("parsing [%s:%d] : '%s': %s\n", file, linenum, args[0], trash);
err_code |= ERR_ALERT | ERR_FATAL;
continue;
if (strcmp(kwl->kw[index].kw, args[0]) == 0) {
/* prepare error message just in case */
- snprintf(trash, trashlen,
+ snprintf(trash, global.tune.bufsize,
"error near '%s' in %s section", args[0], cursection);
rc = kwl->kw[index].parse(args, CFG_LISTEN, curproxy, &defproxy, file, linenum, &errmsg);
if (rc < 0) {
int health, rise, fall, state;
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
/* FIXME begin: calculate local version of the health/rise/fall/state */
health = s->health;
*/
xferred = redistribute_pending(s);
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
if (s->state & SRV_MAINTAIN) {
chunk_printf(&msg,
*/
xferred = check_for_pending(s);
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
if (old_state & SRV_MAINTAIN) {
chunk_printf(&msg,
*/
xferred = redistribute_pending(s);
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
chunk_printf(&msg,
"Load-balancing on %sServer %s/%s is disabled",
*/
xferred = check_for_pending(s);
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
chunk_printf(&msg,
"Load-balancing on %sServer %s/%s is enabled again",
goto fail;
do {
- len = recv(conn->t.sock.fd, trash, trashlen, MSG_PEEK);
+ len = recv(conn->t.sock.fd, trash, global.tune.bufsize, MSG_PEEK);
if (len < 0) {
if (errno == EINTR)
continue;
if (!(conn->flags & CO_FL_ADDR_TO_SET))
goto out_error;
- len = make_proxy_line(trash, trashlen, &conn->addr.from, &conn->addr.to);
+ len = make_proxy_line(trash, global.tune.bufsize, &conn->addr.from, &conn->addr.to);
if (!len)
goto out_error;
case STAT_CLI_O_TAB:
if (!ts)
return;
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
if (!stats_dump_table_head_to_buffer(&msg, si, px, px))
return;
stats_dump_table_entry_to_buffer(&msg, si, px, ts);
}
/* return server's effective weight at the moment */
- snprintf(trash, trashlen, "%d (initial %d)\n", sv->uweight, sv->iweight);
+ snprintf(trash, global.tune.bufsize, "%d (initial %d)\n", sv->uweight, sv->iweight);
bi_putstr(si->ib, trash);
return 1;
}
if (buffer_almost_full(si->ib->buf))
break;
- reql = bo_getline(si->ob, trash, trashlen);
+ reql = bo_getline(si->ob, trash, global.tune.bufsize);
if (reql <= 0) { /* closed or EOL not found */
if (reql == 0)
break;
struct chunk msg;
unsigned int up;
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
switch (si->conn.xprt_st) {
case STAT_ST_INIT:
struct session *s = si->conn.xprt_ctx;
struct chunk msg;
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
switch (si->conn.xprt_st) {
case STAT_ST_INIT:
struct chunk msg;
unsigned int up;
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
switch (si->conn.xprt_st) {
case STAT_ST_INIT:
struct listener *l;
struct chunk msg;
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
switch (si->applet.ctx.stats.px_st) {
case STAT_PX_ST_INIT:
extern const char *monthname[12];
char pn[INET6_ADDRSTRLEN];
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
sess = si->applet.ctx.sess.target;
if (si->applet.ctx.sess.section > 0 && si->applet.ctx.sess.uid != sess->uniq_id) {
return 1;
}
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
switch (si->conn.xprt_st) {
case STAT_ST_INIT:
return 1;
}
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
while (si->conn.xprt_st != STAT_ST_FIN) {
switch (si->conn.xprt_st) {
if (unlikely(si->ib->flags & (CF_WRITE_ERROR|CF_SHUTW)))
return 1;
- chunk_init(&msg, trash, trashlen);
+ chunk_init(&msg, trash, global.tune.bufsize);
if (!si->applet.ctx.errors.px) {
/* the function had not been called yet, let's prepare the
send_log(p, LOG_NOTICE, "SIGHUP received, dumping servers states for proxy %s.\n", p->id);
while (s) {
- snprintf(trash, trashlen,
+ snprintf(trash, global.tune.bufsize,
"SIGHUP: Server %s/%s is %s. Conn: %d act, %d pend, %lld tot.",
p->id, s->id,
(s->state & SRV_RUNNING) ? "UP" : "DOWN",
/* FIXME: those info are a bit outdated. We should be able to distinguish between FE and BE. */
if (!p->srv) {
- snprintf(trash, trashlen,
+ snprintf(trash, global.tune.bufsize,
"SIGHUP: Proxy %s has no servers. Conn: act(FE+BE): %d+%d, %d pend (%d unass), tot(FE+BE): %lld+%lld.",
p->id,
p->feconn, p->beconn, p->totpend, p->nbpend, p->fe_counters.cum_conn, p->be_counters.cum_conn);
} else if (p->srv_act == 0) {
- snprintf(trash, trashlen,
+ snprintf(trash, global.tune.bufsize,
"SIGHUP: Proxy %s %s ! Conn: act(FE+BE): %d+%d, %d pend (%d unass), tot(FE+BE): %lld+%lld.",
p->id,
(p->srv_bck) ? "is running on backup servers" : "has no server available",
p->feconn, p->beconn, p->totpend, p->nbpend, p->fe_counters.cum_conn, p->be_counters.cum_conn);
} else {
- snprintf(trash, trashlen,
+ snprintf(trash, global.tune.bufsize,
"SIGHUP: Proxy %s has %d active servers and %d backup servers available."
" Conn: act(FE+BE): %d+%d, %d pend (%d unass), tot(FE+BE): %lld+%lld.",
p->id, p->srv_act, p->srv_bck,
char *progname;
char *change_dir = NULL;
- trash = malloc(trashlen);
+ trash = malloc(global.tune.bufsize);
/* NB: POSIX does not make it mandatory for gethostname() to NULL-terminate
* the string in case of truncation, and at least FreeBSD appears not to do
si->applet.st0 = PEER_SESSION_GETVERSION;
/* fall through */
case PEER_SESSION_GETVERSION:
- reql = bo_getline(si->ob, trash, trashlen);
+ reql = bo_getline(si->ob, trash, global.tune.bufsize);
if (reql <= 0) { /* closed or EOL not found */
if (reql == 0)
goto out;
si->applet.st0 = PEER_SESSION_GETHOST;
/* fall through */
case PEER_SESSION_GETHOST:
- reql = bo_getline(si->ob, trash, trashlen);
+ reql = bo_getline(si->ob, trash, global.tune.bufsize);
if (reql <= 0) { /* closed or EOL not found */
if (reql == 0)
goto out;
case PEER_SESSION_GETPEER: {
struct peer *curpeer;
char *p;
- reql = bo_getline(si->ob, trash, trashlen);
+ reql = bo_getline(si->ob, trash, global.tune.bufsize);
if (reql <= 0) { /* closed or EOL not found */
if (reql == 0)
goto out;
size_t key_size;
char *p;
- reql = bo_getline(si->ob, trash, trashlen);
+ reql = bo_getline(si->ob, trash, global.tune.bufsize);
if (reql <= 0) { /* closed or EOL not found */
if (reql == 0)
goto out;
case PEER_SESSION_SENDSUCCESS:{
struct peer_session *ps = (struct peer_session *)si->conn.xprt_ctx;
- repl = snprintf(trash, trashlen, "%d\n", PEER_SESSION_SUCCESSCODE);
+ repl = snprintf(trash, global.tune.bufsize, "%d\n", PEER_SESSION_SUCCESSCODE);
repl = bi_putblk(si->ib, trash, repl);
if (repl <= 0) {
if (repl == -1)
struct peer_session *ps = (struct peer_session *)si->conn.xprt_ctx;
/* Send headers */
- repl = snprintf(trash, trashlen,
+ repl = snprintf(trash, global.tune.bufsize,
PEER_SESSION_PROTO_NAME " 1.0\n%s\n%s %d\n%s %lu %d\n",
ps->peer->id,
localpeer,
ps->table->table->type,
(int)ps->table->table->key_size);
- if (repl >= trashlen) {
+ if (repl >= global.tune.bufsize) {
si->applet.st0 = PEER_SESSION_END;
goto switchstate;
}
if (si->ib->flags & CF_WRITE_PARTIAL)
ps->statuscode = PEER_SESSION_CONNECTEDCODE;
- reql = bo_getline(si->ob, trash, trashlen);
+ reql = bo_getline(si->ob, trash, global.tune.bufsize);
if (reql <= 0) { /* closed or EOL not found */
if (reql == 0)
goto out;
}
ts = eb32_entry(eb, struct stksess, upd);
- msglen = peer_prepare_datamsg(ts, ps, trash, trashlen);
+ msglen = peer_prepare_datamsg(ts, ps, trash, global.tune.bufsize);
if (msglen) {
/* message to buffer */
repl = bi_putblk(si->ib, trash, msglen);
}
ts = eb32_entry(eb, struct stksess, upd);
- msglen = peer_prepare_datamsg(ts, ps, trash, trashlen);
+ msglen = peer_prepare_datamsg(ts, ps, trash, global.tune.bufsize);
if (msglen) {
/* message to buffer */
repl = bi_putblk(si->ib, trash, msglen);
}
ts = eb32_entry(eb, struct stksess, upd);
- msglen = peer_prepare_datamsg(ts, ps, trash, trashlen);
+ msglen = peer_prepare_datamsg(ts, ps, trash, global.tune.bufsize);
if (msglen) {
/* message to buffer */
repl = bi_putblk(si->ib, trash, msglen);
goto out;
}
case PEER_SESSION_EXIT:
- repl = snprintf(trash, trashlen, "%d\n", si->applet.st1);
+ repl = snprintf(trash, global.tune.bufsize, "%d\n", si->applet.st1);
if (bi_putblk(si->ib, trash, repl) == -1)
goto out;
static void http_silent_debug(int line, struct session *s)
{
int size = 0;
- size += snprintf(trash + size, trashlen - size,
+ size += snprintf(trash + size, global.tune.bufsize - size,
"[%04d] req: p=%d(%d) s=%d bf=%08x an=%08x data=%p size=%d l=%d w=%p r=%p o=%p sm=%d fw=%ld tf=%08x\n",
line,
s->si[0].state, s->si[0].fd, s->txn.req.msg_state, s->req->flags, s->req->analysers,
s->req->buf->data, s->req->buf->size, s->req->l, s->req->w, s->req->r, s->req->buf->p, s->req->buf->o, s->req->to_forward, s->txn.flags);
write(-1, trash, size);
size = 0;
- size += snprintf(trash + size, trashlen - size,
+ size += snprintf(trash + size, global.tune.bufsize - size,
" %04d rep: p=%d(%d) s=%d bf=%08x an=%08x data=%p size=%d l=%d w=%p r=%p o=%p sm=%d fw=%ld\n",
line,
s->si[1].state, s->si[1].fd, s->txn.rsp.msg_state, s->rep->flags, s->rep->analysers,
/* 1: create the response header */
rdr.len = strlen(HTTP_302);
rdr.str = trash;
- rdr.size = trashlen;
+ rdr.size = global.tune.bufsize;
memcpy(rdr.str, HTTP_302, rdr.len);
srv = target_srv(&s->target);
realm = do_stats?STATS_DEFAULT_REALM:px->id;
sprintf(trash, (txn->flags & TX_USE_PX_CONN) ? HTTP_407_fmt : HTTP_401_fmt, realm);
- chunk_initlen(&msg, trash, trashlen, strlen(trash));
+ chunk_initlen(&msg, trash, global.tune.bufsize, strlen(trash));
txn->status = 401;
stream_int_retnclose(req->prod, &msg);
/* on 401 we still count one error, because normal browsing
}
if (ret) {
- struct chunk rdr = { .str = trash, .size = trashlen, .len = 0 };
+ struct chunk rdr = { .str = trash, .size = global.tune.bufsize, .len = 0 };
const char *msg_fmt;
/* build redirect message */
hdr_val += hdr_name_len;
*hdr_val++ = ':';
*hdr_val++ = ' ';
- hdr_val += strlcpy2(hdr_val, srv_name, trash + trashlen - hdr_val);
+ hdr_val += strlcpy2(hdr_val, srv_name, trash + global.tune.bufsize - hdr_val);
http_header_add_tail2(&txn->req, &txn->hdr_idx, trash, hdr_val - trash);
if (old_o) {
if (start[max] == '\r' || start[max] == '\n')
break;
- UBOUND(max, trashlen - len - 3);
+ UBOUND(max, global.tune.bufsize - len - 3);
len += strlcpy2(trash + len, start, max + 1);
trash[len++] = '\n';
if (write(1, trash, len) < 0) /* shut gcc warning */;
* - HEALTH mode without HTTP check => just send "OK"
* - TCP mode from monitoring address => just close
*/
- recv(cfd, trash, trashlen, MSG_DONTWAIT);
+ recv(cfd, trash, global.tune.bufsize, MSG_DONTWAIT);
if (p->mode == PR_MODE_HTTP ||
(p->mode == PR_MODE_HEALTH && (p->options2 & PR_O2_CHK_ANY) == PR_O2_HTTP_CHK))
send(cfd, "HTTP/1.0 200 OK\r\n\r\n", 19, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_MORE);
if (!servername)
return SSL_TLSEXT_ERR_NOACK;
- for (i = 0; i < trashlen; i++) {
+ for (i = 0; i < global.tune.bufsize; i++) {
if (!servername[i])
break;
trash[i] = tolower(servername[i]);
* TCP sockets. We first try to drain possibly pending
* data to avoid this as much as possible.
*/
- ret = recv(conn->t.sock.fd, trash, trashlen, MSG_NOSIGNAL|MSG_DONTWAIT);
+ ret = recv(conn->t.sock.fd, trash, global.tune.bufsize, MSG_NOSIGNAL|MSG_DONTWAIT);
goto out_error;
}
}
* (which is recomputed every time since it's constant). If
* it is positive, it means we have to send from the start.
*/
- ret = make_proxy_line(trash, trashlen, &si->ob->prod->conn.addr.from, &si->ob->prod->conn.addr.to);
+ ret = make_proxy_line(trash, global.tune.bufsize, &si->ob->prod->conn.addr.from, &si->ob->prod->conn.addr.to);
if (!ret)
goto out_error;