[master] df74fe4 Unlearn struct cli from VCLI_WriteResult()
Poul-Henning Kamp
phk at varnish-cache.org
Mon Jun 6 10:43:17 CEST 2011
commit df74fe4c540e4e7b0dbd7932e5bca96cc0f6ae9d
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Jun 6 08:42:59 2011 +0000
Unlearn struct cli from VCLI_WriteResult()
diff --git a/bin/varnishd/mgt_cli.c b/bin/varnishd/mgt_cli.c
index ee62ada..d3a0c67 100644
--- a/bin/varnishd/mgt_cli.c
+++ b/bin/varnishd/mgt_cli.c
@@ -400,7 +400,7 @@ mgt_cli_setup(int fdi, int fdo, int verbose, const char *ident, mgt_cli_close_f
mcf_banner(cli, NULL, NULL);
}
AZ(VSB_finish(cli->sb));
- (void)VCLI_WriteResult(fdo, cli);
+ (void)VCLI_WriteResult(fdo, cli->result, VSB_data(cli->sb));
ev = vev_new();
diff --git a/include/cli_common.h b/include/cli_common.h
index 602afb0..5bad09d 100644
--- a/include/cli_common.h
+++ b/include/cli_common.h
@@ -44,7 +44,7 @@ struct cli {
struct VCLS *cls;
};
-int VCLI_WriteResult(int fd, const struct cli *cli);
+int VCLI_WriteResult(int fd, unsigned status, const char *result);
int VCLI_ReadResult(int fd, unsigned *status, char **ptr, double tmo);
void VCLI_AuthResponse(int S_fd, const char *challenge,
diff --git a/lib/libvarnish/cli_common.c b/lib/libvarnish/cli_common.c
index 3b7a0aa..7b6c43a 100644
--- a/lib/libvarnish/cli_common.c
+++ b/lib/libvarnish/cli_common.c
@@ -83,7 +83,7 @@ VCLI_SetResult(struct cli *cli, unsigned res)
}
int
-VCLI_WriteResult(int fd, const struct cli *cli)
+VCLI_WriteResult(int fd, unsigned status, const char *result)
{
int i, l;
struct iovec iov[3];
@@ -93,18 +93,18 @@ VCLI_WriteResult(int fd, const struct cli *cli)
* any misformats by snprintf
*/
- assert(cli->result >= 100);
- assert(cli->result <= 999); /*lint !e650 const out of range */
+ assert(status >= 100);
+ assert(status <= 999); /*lint !e650 const out of range */
i = snprintf(res, sizeof res,
- "%-3d %-8ld\n", cli->result, (long)VSB_len(cli->sb));
+ "%-3d %-8jd\n", status, (intmax_t)strlen(result));
assert(i == CLI_LINE0_LEN);
iov[0].iov_base = res;
iov[0].iov_len = CLI_LINE0_LEN;
- iov[1].iov_base = VSB_data(cli->sb);
- iov[1].iov_len = VSB_len(cli->sb);
+ iov[1].iov_base = (void*)(uintptr_t)result; /* TRUST ME */
+ iov[1].iov_len = strlen(result);
iov[2].iov_base = nl;
iov[2].iov_len = 1;
diff --git a/lib/libvarnish/cli_serve.c b/lib/libvarnish/cli_serve.c
index 571ee29..621f184 100644
--- a/lib/libvarnish/cli_serve.c
+++ b/lib/libvarnish/cli_serve.c
@@ -293,7 +293,8 @@ cls_vlu2(void *priv, char * const *av)
cli->cls = NULL;
- if (VCLI_WriteResult(cfd->fdo, cli) || cli->result == CLIS_CLOSE)
+ if (VCLI_WriteResult(cfd->fdo, cli->result, VSB_data(cli->sb)) ||
+ cli->result == CLIS_CLOSE)
return (1);
return (0);
More information about the varnish-commit
mailing list