Index: squid/src/client_side.c diff -c squid/src/client_side.c:1.561.2.31 squid/src/client_side.c:1.561.2.32 *** squid/src/client_side.c:1.561.2.31 Sat Feb 8 08:20:09 2003 --- squid/src/client_side.c Sun Feb 9 14:42:03 2003 *************** *** 3045,3052 **** break; } } ! clientAccessCheck(http); ! continue; /* while offset> 0 && body.size_left == 0 */ } else if (parser_return_code == 0) { /* * Partial request received; reschedule until parseHttpRequest() --- 3045,3059 ---- break; } } ! if (request->method == METHOD_CONNECT) { ! /* Stop reading requests... */ ! commSetSelect(fd, COMM_SELECT_READ, NULL, NULL, 0); ! clientAccessCheck(http); ! break; ! } else { ! clientAccessCheck(http); ! continue; /* while offset> 0 && body.size_left == 0 */ ! } } else if (parser_return_code == 0) { /* * Partial request received; reschedule until parseHttpRequest() Index: squid/src/ssl.c diff -c squid/src/ssl.c:1.118.2.2 squid/src/ssl.c:1.118.2.3 *** squid/src/ssl.c:1.118.2.2 Wed Dec 4 03:25:43 2002 --- squid/src/ssl.c Sun Feb 9 14:42:03 2003 *************** *** 504,509 **** --- 504,519 ---- sslState->server.fd = sock; sslState->server.buf = xmalloc(SQUID_TCP_SO_RCVBUF); sslState->client.buf = xmalloc(SQUID_TCP_SO_RCVBUF); + /* Copy any pending data from the client connection */ + sslState->client.len = http->conn->in.offset; + if (sslState->client.len> 0) { + if (sslState->client.len> SQUID_TCP_SO_RCVBUF) { + safe_free(sslState->client.buf); + sslState->client.buf = xmalloc(sslState->client.len); + } + memcpy(sslState->client.buf, http->conn->in.buf, sslState->client.len); + http->conn->in.offset = 0; + } comm_add_close_handler(sslState->server.fd, sslServerClosed, sslState);