$OpenBSD: patch-proxy_c,v 1.1.1.1 2009/10/08 19:13:09 sthen Exp $ --- proxy.c.orig Thu Nov 15 18:08:06 2007 +++ proxy.c Thu Oct 8 08:08:07 2009 @@ -530,6 +530,7 @@ bailout: int make_connect(int sd, const char *thost) { rr_data_t data1, data2; int ret, closed; + hlist_t tl; if (!sd || !thost || !strlen(thost)) return -1; @@ -540,9 +541,18 @@ int make_connect(int sd, const char *thost) { data1->req = 1; data1->method = strdup("CONNECT"); data1->url = strdup(thost); - data1->http = strdup("0"); + data1->http = strdup("1"); data1->headers = hlist_mod(data1->headers, "Proxy-Connection", "Keep-Alive", 1); + /* + * Header replacement + */ + tl = header_list; + while (tl) { + data1->headers = hlist_mod(data1->headers, tl->key, tl->value, 1); + tl = tl->next; + } + if (debug) printf("Starting authentication...\n"); @@ -916,7 +926,7 @@ void *proxy_thread(void *client) { char *tmp, *buf, *pos, *dom; struct auth_s *tcreds; /* Per-thread credentials; for NTLM-to-basic */ - int cd = (int)client; + int cd = (int)(uintptr_t)client; int authok = 0; int sd = 0; @@ -1387,7 +1397,7 @@ void *tunnel_thread(void *client) { } void *socks5_thread(void *client) { - int cd = (int)client; + int cd = (int)(uintptr_t)client; char *tmp, *thost, *tport, *uname, *upass; unsigned char *bs, *auths, *addr; unsigned short port; @@ -2618,11 +2628,11 @@ int main(int argc, char **argv) { if (plist_in(proxyd_list, i)) { if (!serialize) - tid = pthread_create(&pthr, &pattr, proxy_thread, (void *)cd); + tid = pthread_create(&pthr, &pattr, proxy_thread, (void *)(uintptr_t)cd); else - proxy_thread((void *)cd); + proxy_thread((void *)(uintptr_t)cd); } else if (plist_in(socksd_list, i)) { - tid = pthread_create(&pthr, &pattr, socks5_thread, (void *)cd); + tid = pthread_create(&pthr, &pattr, socks5_thread, (void *)(uintptr_t)cd); } else { data = (struct thread_arg_s *)new(sizeof(struct thread_arg_s)); data->fd = cd;