X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/f9ba5e2255cf18092750fffacb6a9603571a2be5..83811e3c1b8189c0a725ec53df699730e7767263:/src/src/transports/smtp_socks.c diff --git a/src/src/transports/smtp_socks.c b/src/src/transports/smtp_socks.c index 77cf623e7..cd8ed3e6d 100644 --- a/src/src/transports/smtp_socks.c +++ b/src/src/transports/smtp_socks.c @@ -85,7 +85,7 @@ else if (Ustrncmp(opt, "name=", 5) == 0) else if (Ustrncmp(opt, "pass=", 5) == 0) sob->auth_pwd = opt + 5; else if (Ustrncmp(opt, "port=", 5) == 0) - sob->port = atoi(opt + 5); + sob->port = atoi(CCS opt + 5); else if (Ustrncmp(opt, "tmo=", 4) == 0) sob->timeout = atoi(CCS opt + 4); else if (Ustrncmp(opt, "pri=", 4) == 0) @@ -119,9 +119,8 @@ switch(method) len = i + j + 3; HDEBUG(D_transport|D_acl|D_v) { - int i; debug_printf_indent(" SOCKS>>"); - for (i = 0; iis_failed && sd->priority == pri) - if ((rnd -= sd->weight) <= 0) + if ((rnd -= sd->weight) < 0) return i; } @@ -297,6 +296,7 @@ for(;;) proxy.address = proxy.name = sob->proxy_host; proxy_af = Ustrchr(sob->proxy_host, ':') ? AF_INET6 : AF_INET; + /*XXX we trust that the method-select command is idempotent */ if ((fd = smtp_sock_connect(&proxy, proxy_af, sob->port, interface, tb, sob->timeout, &early_data)) >= 0) { @@ -319,7 +319,7 @@ HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SOCKS>> 05 01 %02x\n", sob- (void) setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, US &off, sizeof(off)); #endif -if ( !fd_ready(fd, tmo-time(NULL)) +if ( !fd_ready(fd, tmo) || read(fd, buf, 2) != 2 ) goto rcv_err; @@ -358,9 +358,8 @@ if ( buf[0] != 5 state = US"connect"; HDEBUG(D_transport|D_acl|D_v) { - int i; debug_printf_indent(" SOCKS>>"); - for (i = 0; i>"); - for (i = 0; i