diff --git a/src/auth.c b/src/auth.c index 54a294a..d00c1f6 100644 --- a/src/auth.c +++ b/src/auth.c @@ -195,9 +195,9 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, struct soc break; return 59; case 3: - if (sockgetlinebuf(param, SERVER, buf, 256, 0, conf.timeouts[CHAIN_TO]) > 1) - break; - return 59; + if (sockgetlinebuf(param, SERVER, buf, 1, EOF, conf.timeouts[CHAIN_TO]) != 1) return 59; + if (sockgetlinebuf(param, SERVER, buf, (unsigned)(buf[0]+2), EOF, conf.timeouts[CHAIN_TO]) != (unsigned)(buf[0]+2)) return 59; + break; case 4: if (sockgetlinebuf(param, SERVER, buf, 18, EOF, conf.timeouts[CHAIN_TO]) == 18) break;