commit - afb86b2c8a6e846c6e088085f3b454f3b4bdd5c8
commit + 26cd3e9dd3d4042457224b5ecef6de8234d7f950
blob - 75cb58cebcb314bd5ee333e807e71c0734d1f29f
blob + 85ab8b5f4bd8b509d4bde8cd3530d3a0e737fff5
--- config.c
+++ config.c
memcpy(proxy, imsg->data, sizeof(*proxy));
- log_debug("%s: server=%s proxy-to=%s:%d (%s)", __func__,
+ log_debug("%s: proxy=%s -> %s:%s (%s)", __func__,
proxy->pr_conf.host, proxy->pr_conf.proxy_addr,
proxy->pr_conf.proxy_port, proxy->pr_conf.proxy_name);
blob - 01c32897bb8d5f0b0b97c8f0ef15b277e9f14665
blob + 078319a04b3c234c489053e08cad7613ed2d79f3
--- galileo.h
+++ galileo.h
char stylesheet[PATH_MAX];
char proxy_addr[HOST_NAME_MAX + 1];
char proxy_name[HOST_NAME_MAX + 1];
- uint16_t proxy_port; /* TODO: turn into string */
+ char proxy_port[6];
};
struct proxy {
blob - f3ace66e6d54ee9b2e1a146beb72b64c66772252
blob + 8bc265231e27893e9e70ed90c1c593e9264a6d66
--- parse.y
+++ parse.y
| proxyoptsl optnl
;
-proxyoptsl : SOURCE STRING PORT port {
+proxyoptsl : SOURCE STRING proxyport {
size_t n;
n = strlcpy(pr->pr_conf.proxy_addr, $2,
sizeof(pr->pr_conf.proxy_addr));
if (n >= sizeof(pr->pr_conf.proxy_addr))
yyerror("proxy source too long!");
- pr->pr_conf.proxy_port = $4;
-
free($2);
}
| HOSTNAME STRING {
free($2);
}
;
+
+proxyport : /* empty */ {
+ strlcpy(pr->pr_conf.proxy_port, "1965",
+ sizeof(pr->pr_conf.proxy_port));
+ }
+ | PORT port {
+ size_t len;
+ int n;
+
+ len = sizeof(pr->pr_conf.proxy_port);
+ n = snprintf(pr->pr_conf.proxy_port, len, "%lld", $2);
+ if (n < 0 || (size_t)n >= len)
+ fatal("port number too long?");
+ };
port : NUMBER {
if ($1 <= 0 || $1 > (int)USHRT_MAX) {
blob - c987fa20d8b181b09f97ab77043a03c203b76d9d
blob + 5bc56b3258bf39b256e0a965e72d253ddaac5605
--- proxy.c
+++ proxy.c
struct addrinfo hints;
struct asr_query *query;
int r;
- char *url, port[32];
+ char *url;
if ((clt->clt_pc = proxy_server_match(env, clt)) == NULL) {
if (proxy_start_reply(clt, 501, "text/html") == -1)
return (0);
}
- (void)snprintf(port, sizeof(port), "%d", clt->clt_pc->proxy_port);
-
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
- query = getaddrinfo_async(clt->clt_pc->proxy_addr, port, &hints, NULL);
+ query = getaddrinfo_async(clt->clt_pc->proxy_addr,
+ clt->clt_pc->proxy_port, &hints, NULL);
if (query == NULL) {
log_warn("getaddrinfo_async");
return (fcgi_abort_request(clt));
clt->clt_evasr = NULL;
if (res->ar_gai_errno != 0) {
- log_warnx("failed to resolve %s:%d: %s",
+ log_warnx("failed to resolve %s:%s: %s",
pc->proxy_addr, pc->proxy_port,
gai_strerror(res->ar_gai_errno));
if (proxy_start_reply(clt, 501, "text/html") == -1)
return;
err:
- log_warn("failed to connect to %s:%d",
+ log_warn("failed to connect to %s:%s",
clt->clt_pc->proxy_addr, clt->clt_pc->proxy_port);
if (proxy_start_reply(clt, 501, "text/html") == -1)
return;