[master] 0fdb149 It used to be that if you wanted to talk directly to a network service, you would TELNET to it, and *some* of the TELNET client programs were broken, and would send TELNET protocol magic sequences to the other end, even when not talking on port 23.
Poul-Henning Kamp
phk at FreeBSD.org
Tue Feb 24 21:32:32 CET 2015
commit 0fdb149d25dd4035b755111f8337d625371f5b67
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Tue Feb 24 20:29:01 2015 +0000
It used to be that if you wanted to talk directly to a network
service, you would TELNET to it, and *some* of the TELNET client
programs were broken, and would send TELNET protocol magic
sequences to the other end, even when not talking on port 23.
Now that we have varnishadm, and where netcat is widely available,
that is simply not a problem we need to keep dead code around for
any more.
diff --git a/bin/varnishd/mgt/mgt_cli.c b/bin/varnishd/mgt/mgt_cli.c
index 84446aa..5267065 100644
--- a/bin/varnishd/mgt/mgt_cli.c
+++ b/bin/varnishd/mgt/mgt_cli.c
@@ -51,7 +51,6 @@
#include "vcli_priv.h"
#include "vcli_serve.h"
#include "vev.h"
-#include "vlu.h"
#include "vrnd.h"
#include "vss.h"
#include "vtcp.h"
@@ -388,10 +387,6 @@ mgt_cli_setup(int fdi, int fdo, int verbose, const char *ident,
cli->ident = strdup(ident);
- /* Deal with TELNET options */
- if (fdi != 0)
- VLU_SetTelnet(cli->vlu, fdo);
-
if (fdi != 0 && secret_file != NULL) {
cli->auth = MCF_NOAUTH;
mgt_cli_challenge(cli);
diff --git a/include/vlu.h b/include/vlu.h
index b7023cb..b001523 100644
--- a/include/vlu.h
+++ b/include/vlu.h
@@ -34,6 +34,4 @@ typedef int (vlu_f)(void *, const char *);
struct vlu *VLU_New(void *priv, vlu_f *func, unsigned bufsize);
int VLU_Fd(int fd, struct vlu *l);
void VLU_Destroy(struct vlu *l);
-void VLU_SetTelnet(struct vlu *l, int fd);
-
#endif
diff --git a/lib/libvarnish/vlu.c b/lib/libvarnish/vlu.c
index 1aabc65..0673f10 100644
--- a/lib/libvarnish/vlu.c
+++ b/lib/libvarnish/vlu.c
@@ -47,7 +47,6 @@ struct vlu {
unsigned bufl;
unsigned bufp;
void *priv;
- int telnet;
vlu_f *func;
};
@@ -63,7 +62,6 @@ VLU_New(void *priv, vlu_f *func, unsigned bufsize)
l->func = func;
l->priv = priv;
l->bufl = bufsize - 1;
- l->telnet = -1;
l->buf = malloc(l->bufl + 1L);
if (l->buf == NULL) {
FREE_OBJ(l);
@@ -74,14 +72,6 @@ VLU_New(void *priv, vlu_f *func, unsigned bufsize)
}
void
-VLU_SetTelnet(struct vlu *l, int fd)
-{
- CHECK_OBJ_NOTNULL(l, LINEUP_MAGIC);
- assert(fd >= 0);
- l->telnet = fd;
-}
-
-void
VLU_Destroy(struct vlu *l)
{
@@ -91,52 +81,6 @@ VLU_Destroy(struct vlu *l)
}
static int
-vlu_dotelnet(struct vlu *l, char *p)
-{
- char *e;
- char tno[3];
- int i;
-
- e = l->buf + l->bufp;
- assert(p >= l->buf && p < e);
- assert(*p == (char)255);
-
- /* We need at least two characters */
- if (p == e - 1)
- return (1);
-
- /* And three for will/wont/do/dont */
- if (p[1] >= (char)251 && p[1] <= (char)254 && p == e - 2)
- return (1);
-
- switch (p[1]) {
- case (char)251: /* WILL */
- case (char)252: /* WONT */
- /* Ignore these */
- i = 3;
- break;
- case (char)253: /* DO */
- case (char)254: /* DONT */
- /* Return WONT for these */
- memcpy(tno, p, 3);
- tno[1] = (char)252;
- if (write(l->telnet, tno, 3) != 3)
- return (1);
- i = 3;
- break;
- default:
- /* Ignore the rest */
- /* XXX: only p[1] >= 240 ? */
- i = 2;
- }
-
- /* Remove telnet sequence from buffer */
- memmove(p, p + i, 1 + e - (p + i));
- l->bufp -= i;
- return (0);
-}
-
-static int
LineUpProcess(struct vlu *l)
{
char *p, *q;
@@ -146,9 +90,6 @@ LineUpProcess(struct vlu *l)
for (p = l->buf; *p != '\0'; p = q) {
/* Find first CR or NL */
for (q = p; *q != '\0'; q++) {
- while (l->telnet >= 0 && *q == (char)255)
- if (vlu_dotelnet(l, q))
- return (0);
if (*q == '\n' || *q == '\r')
break;
}
More information about the varnish-commit
mailing list