Enable header insertion for tcp and ssl proxspecs as well, reported by @Sfinx

Remove redundant mail field of proxyspec
pull/13/head
Soner Tari 6 years ago
parent b67f5c6e58
commit 9213734c95

@ -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) {

@ -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 */

@ -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;
}
}

Loading…
Cancel
Save