diff --git a/ncat/ncat_main.c b/ncat/ncat_main.c
index fb8745a..82c8acd 100644
--- a/ncat/ncat_main.c
+++ b/ncat/ncat_main.c
@@ -261,7 +261,7 @@ int main(int argc, char *argv[])
struct host_list_node *allow_host_list = NULL;
struct host_list_node *deny_host_list = NULL;
- unsigned short proxyport = DEFAULT_PROXY_PORT;
+ unsigned short proxyport;
int srcport = -1;
char *source = NULL;
@@ -705,30 +705,33 @@ int main(int argc, char *argv[])
}
if (o.proxyaddr) {
- if (!o.proxytype)
- o.proxytype = Strdup("http");
-
- if (!strcmp(o.proxytype, "http") ||
- !strcmp(o.proxytype, "socks4") || !strcmp(o.proxytype, "4") ||
- !strcmp(o.proxytype, "socks5") || !strcmp(o.proxytype, "5")) {
- /* Parse HTTP/SOCKS proxy address and store it in targetss.
- * If the proxy server is given as an IPv6 address (not hostname),
- * the port number MUST be specified as well or parsing will break
- * (due to the colons in the IPv6 address and host:port separator).
- */
-
- targetaddrs->addrlen = parseproxy(o.proxyaddr,
- &targetaddrs->addr.storage, &targetaddrs->addrlen, &proxyport);
- if (o.af == AF_INET) {
- targetaddrs->addr.in.sin_port = htons(proxyport);
- } else { // might modify to else if and test AF_{INET6|UNIX|UNSPEC}
- targetaddrs->addr.in6.sin6_port = htons(proxyport);
- }
- } else {
- bye("Invalid proxy type \"%s\".", o.proxytype);
- }
-
- if (o.listen)
+ if (!o.proxytype){
+ o.proxytype = Strdup("http");
+ }
+
+ if (!strcmp(o.proxytype, "http")) {
+ proxyport = DEFAULT_PROXY_PORT;
+ } else if (!strcmp(o.proxytype, "socks4") || !strcmp(o.proxytype, "4")){
+ proxyport = DEFAULT_SOCKS4_PORT;
+ } else if (!strcmp(o.proxytype, "socks5") || !strcmp(o.proxytype, "5")) {
+ proxyport = DEFAULT_SOCKS5_PORT;
+ } else {
+ bye("Invalid proxy type \"%s\".", o.proxytype);
+ }
+
+ /* Parse HTTP/SOCKS proxy address and store it in targetss.
+ * If the proxy server is given as an IPv6 address (not hostname),
+ * the port number MUST be specified as well or parsing will break
+ * (due to the colons in the IPv6 address and host:port separator).
+ */
+ targetaddrs->addrlen = parseproxy(o.proxyaddr,
+ &targetaddrs->addr.storage, &targetaddrs->addrlen, &proxyport);
+ if (o.af == AF_INET) {
+ targetaddrs->addr.in.sin_port = htons(proxyport);
+ } else { // might modify to else if and test AF_{INET6|UNIX|UNSPEC}
+ targetaddrs->addr.in6.sin6_port = htons(proxyport);
+ }
+ if (o.listen)
bye("Invalid option combination: --proxy and -l.");
} else {
if (o.proxytype) {