Commit 0fdb149d authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

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.
parent 5002303d
......@@ -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);
......
......@@ -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
......@@ -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);
......@@ -73,14 +71,6 @@ VLU_New(void *priv, vlu_f *func, unsigned bufsize)
return (l);
}
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)
{
......@@ -90,52 +80,6 @@ VLU_Destroy(struct vlu *l)
FREE_OBJ(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)
{
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment