struct proxy *be = s ? s->be : fe;
struct http_txn *txn = s ? s->txn : NULL;
const struct strm_logs *logs = s ? &s->logs : NULL;
+ const struct connection *be_conn = s ? cs_conn(objt_cs(s->si[1].end)) : NULL;
struct buffer chunk;
char *uri;
char *spc;
break;
case LOG_FMT_BACKENDIP: // %bi
- conn = cs_conn(objt_cs(s->si[1].end));
- if (conn)
- ret = lf_ip(tmplog, (struct sockaddr *)&conn->addr.from, dst + maxsize - tmplog, tmp);
+ if (be_conn)
+ ret = lf_ip(tmplog, (const struct sockaddr *)&be_conn->addr.from, dst + maxsize - tmplog, tmp);
else
ret = lf_text_len(tmplog, NULL, 0, dst + maxsize - tmplog, tmp);
break;
case LOG_FMT_BACKENDPORT: // %bp
- conn = cs_conn(objt_cs(s->si[1].end));
- if (conn)
- ret = lf_port(tmplog, (struct sockaddr *)&conn->addr.from, dst + maxsize - tmplog, tmp);
+ if (be_conn)
+ ret = lf_port(tmplog, (struct sockaddr *)&be_conn->addr.from, dst + maxsize - tmplog, tmp);
else
ret = lf_text_len(tmplog, NULL, 0, dst + maxsize - tmplog, tmp);
break;
case LOG_FMT_SERVERIP: // %si
- conn = cs_conn(objt_cs(s->si[1].end));
- if (conn)
- ret = lf_ip(tmplog, (struct sockaddr *)&conn->addr.to, dst + maxsize - tmplog, tmp);
+ if (be_conn)
+ ret = lf_ip(tmplog, (struct sockaddr *)&be_conn->addr.to, dst + maxsize - tmplog, tmp);
else
ret = lf_text_len(tmplog, NULL, 0, dst + maxsize - tmplog, tmp);
break;
case LOG_FMT_SERVERPORT: // %sp
- conn = cs_conn(objt_cs(s->si[1].end));
- if (conn)
- ret = lf_port(tmplog, (struct sockaddr *)&conn->addr.to, dst + maxsize - tmplog, tmp);
+ if (be_conn)
+ ret = lf_port(tmplog, (struct sockaddr *)&be_conn->addr.to, dst + maxsize - tmplog, tmp);
else
ret = lf_text_len(tmplog, NULL, 0, dst + maxsize - tmplog, tmp);