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