From 9213734c957da516f9da525f2dde35ae9e254b91 Mon Sep 17 00:00:00 2001 From: Soner Tari Date: Sat, 22 Sep 2018 02:34:25 +0300 Subject: [PATCH] Enable header insertion for tcp and ssl proxspecs as well, reported by @Sfinx Remove redundant mail field of proxyspec --- opts.c | 10 +++------- opts.h | 1 - pxyconn.c | 14 +++++++------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/opts.c b/opts.c index 2b180ce..0d4f3f1 100644 --- a/opts.c +++ b/opts.c @@ -272,7 +272,6 @@ proxyspec_parse(int *argc, char **argv[], const char *natengine, proxyspec_t **o spec->ssl = 0; spec->http = 0; spec->upgrade = 0; - spec->mail = 0; spec->pop3 = 0; spec->smtp = 0; if (!strcmp(**argv, "tcp")) { @@ -292,21 +291,17 @@ proxyspec_parse(int *argc, char **argv[], const char *natengine, proxyspec_t **o spec->upgrade = 1; } else if (!strcmp(**argv, "pop3")) { - spec->mail = 1; spec->pop3 = 1; } else if (!strcmp(**argv, "pop3s")) { spec->ssl = 1; - spec->mail = 1; spec->pop3 = 1; } else if (!strcmp(**argv, "smtp")) { - spec->mail = 1; spec->smtp = 1; } else if (!strcmp(**argv, "smtps")) { spec->ssl = 1; - spec->mail = 1; spec->smtp = 1; } else { fprintf(stderr, "Unknown connection " @@ -516,11 +511,12 @@ proxyspec_str(proxyspec_t *spec) return NULL; } } - if (asprintf(&s, "listen=[%s]:%s %s%s%s%s %s%s%s", lhbuf, lpbuf, + if (asprintf(&s, "listen=[%s]:%s %s%s%s%s%s %s%s%s", lhbuf, lpbuf, (spec->ssl ? "ssl" : "tcp"), (spec->upgrade ? "|upgrade" : ""), (spec->http ? "|http" : ""), - (spec->mail ? "|mail" : ""), + (spec->pop3 ? "|pop3" : ""), + (spec->smtp ? "|smtp" : ""), (spec->natengine ? spec->natengine : cbuf), (pdstbuf), (csrcbuf)) < 0) { diff --git a/opts.h b/opts.h index de4fed2..dc7d82c 100644 --- a/opts.h +++ b/opts.h @@ -41,7 +41,6 @@ typedef struct proxyspec { unsigned int ssl : 1; unsigned int http : 1; unsigned int upgrade: 1; - unsigned int mail : 1; unsigned int pop3 : 1; unsigned int smtp : 1; unsigned int dns : 1; /* set if spec needs DNS lookups */ diff --git a/pxyconn.c b/pxyconn.c index 9094d01..2405ad3 100644 --- a/pxyconn.c +++ b/pxyconn.c @@ -2235,13 +2235,7 @@ pxy_bev_readcb(struct bufferevent *bev, void *arg) // @attention Cannot use string manipulation functions; we are dealing with binary arrays here, not NULL-terminated strings if (!ctx->sent_header) { - if (ctx->spec->mail) { - memmove(packet + header_len + 2, packet, packet_size); - memcpy(packet, ctx->header_str, header_len); - memcpy(packet + header_len, "\r\n", 2); - packet_size+= header_len + 2; - ctx->sent_header = 1; - } else { + if (ctx->spec->http) { char *pos = memmem(packet, packet_size, "\r\n", 2); if (pos) { memmove(pos + 2 + header_len, pos, packet_size - (pos - packet)); @@ -2254,6 +2248,12 @@ pxy_bev_readcb(struct bufferevent *bev, void *arg) log_dbg_level_printf(LOG_DBG_MODE_FINE, "pxy_bev_readcb: No CRLF in packet\n"); #endif /* DEBUG_PROXY */ } + } else { + memmove(packet + header_len + 2, packet, packet_size); + memcpy(packet, ctx->header_str, header_len); + memcpy(packet + header_len, "\r\n", 2); + packet_size+= header_len + 2; + ctx->sent_header = 1; } }