Anyone? :) -------------------------------------
From: "Gonzalo L. R." <[email protected]> To: Ports Mailing List <[email protected]> Date: Tue, 4 Sep 2012 17:17:01 -0300 Subject: UPDATE: Pound-2.6 Hi, Update for Pound to 2.6: - allow multiple AddHeader directives - fixed memory leak in config/AddHeader - fixed memory leak in DH - fixed problem in SNI certificate storage - changed long to long long for support of requests larger than 2GB - added parsing for certificate CN - fixed problem in task enqueing - fixed small problem in Makefile And others, while here, GROFF is not needed and patches applied upstream. Little test on amd64, more are wellcome :) Ok? Comments? Cheers. -- Sending from my VCR... Index: Makefile =================================================================== RCS file: /cvs/ports/www/pound/Makefile,v retrieving revision 1.10 diff -u -p -r1.10 Makefile --- Makefile 26 Jan 2012 08:03:57 -0000 1.10 +++ Makefile 4 Sep 2012 20:14:28 -0000 @@ -2,9 +2,8 @@ COMMENT = HTTP reverse proxy/load balancer/SSL offload -DISTNAME = Pound-2.5 +DISTNAME = Pound-2.6 PKGNAME = ${DISTNAME:L} -REVISION = 2 CATEGORIES = www @@ -29,7 +28,6 @@ CONFIGURE_ARGS += CPPFLAGS="-I${LOCALBAS --with-owner=root \ --with-group=bin -USE_GROFF = Yes NO_REGRESS = Yes pre-configure: Index: distinfo =================================================================== RCS file: /cvs/ports/www/pound/distinfo,v retrieving revision 1.3 diff -u -p -r1.3 distinfo --- distinfo 30 Jul 2010 21:22:51 -0000 1.3 +++ distinfo 4 Sep 2012 20:14:28 -0000 @@ -1,5 +1,2 @@ -MD5 (Pound-2.5.tgz) = ijn1kCCUYZr82n0S2dg0LA== -RMD160 (Pound-2.5.tgz) = b41V7/EbJbCsDatmqskK9TgOJ1M= -SHA1 (Pound-2.5.tgz) = C8jEW5r7ZPuIELRCEzRcKmfOiow= -SHA256 (Pound-2.5.tgz) = Ed+ntGljbUOuyANFWJSzCCG6f2ZBwc/UXfUwWdOsTJU= -SIZE (Pound-2.5.tgz) = 172084 +SHA256 (Pound-2.6.tgz) = CtJeNlLiIRervBenC12JE+BZkTGKVQa8dDfmYmFv3yE= +SIZE (Pound-2.6.tgz) = 180595 Index: patches/patch-config_c =================================================================== RCS file: patches/patch-config_c diff -N patches/patch-config_c --- patches/patch-config_c 4 Oct 2010 08:47:22 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,42 +0,0 @@ -$OpenBSD: patch-config_c,v 1.1 2010/10/04 08:47:22 sthen Exp $ - -fix for openssl 1.0 -http://www.apsis.ch/pound/pound_list/archive/2010/2010-02/1266065082000 - ---- config.c.orig Tue Feb 2 11:49:02 2010 -+++ config.c Sun Oct 3 23:27:58 2010 -@@ -431,14 +431,22 @@ t_hash(const TABNODE *e) - res = (res ^ *k++) * 16777619; - return res; - } -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+static IMPLEMENT_LHASH_HASH_FN(t, TABNODE) -+#else - static IMPLEMENT_LHASH_HASH_FN(t_hash, const TABNODE *) -+#endif - - static int - t_cmp(const TABNODE *d1, const TABNODE *d2) - { - return strcmp(d1->key, d2->key); - } -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+static IMPLEMENT_LHASH_COMP_FN(t, TABNODE) -+#else - static IMPLEMENT_LHASH_COMP_FN(t_cmp, const TABNODE *) -+#endif - - /* - * parse a service -@@ -460,7 +468,11 @@ parse_service(const char *svc_name) - pthread_mutex_init(&res->mut, NULL); - if(svc_name) - strncpy(res->name, svc_name, KEY_SIZE); -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ if((res->sessions = LHM_lh_new(TABNODE, t)) == NULL) -+#else - if((res->sessions = lh_new(LHASH_HASH_FN(t_hash), LHASH_COMP_FN(t_cmp))) == NULL) -+#endif - conf_err("lh_new failed - aborted"); - ign_case = ignore_case; - while(conf_fgets(lin, MAXBUF)) { Index: patches/patch-pound_8 =================================================================== RCS file: /cvs/ports/www/pound/patches/patch-pound_8,v retrieving revision 1.2 diff -u -p -r1.2 patch-pound_8 --- patches/patch-pound_8 3 Oct 2010 22:27:53 -0000 1.2 +++ patches/patch-pound_8 4 Sep 2012 20:14:28 -0000 @@ -1,6 +1,6 @@ $OpenBSD: patch-pound_8,v 1.2 2010/10/03 22:27:53 sthen Exp $ ---- pound.8.orig Tue Feb 2 11:49:02 2010 -+++ pound.8 Sun Oct 3 23:27:32 2010 +--- pound.8.orig Wed Dec 28 10:57:45 2011 ++++ pound.8 Tue Sep 4 17:04:51 2012 @@ -155,7 +155,7 @@ running a quick syntax check before actually activatin \fB\-f\fR config_file Location of the configuration file (see below for a full description of the format). @@ -10,7 +10,7 @@ $OpenBSD: patch-pound_8,v 1.2 2010/10/03 .TP \fB\-p\fR pid_file Location of the pid file. -@@ -1142,11 +1142,11 @@ this is where +@@ -1191,11 +1191,11 @@ this is where .B Pound will attempt to record its process id. .TP Index: patches/patch-pound_h =================================================================== RCS file: patches/patch-pound_h diff -N patches/patch-pound_h --- patches/patch-pound_h 4 Oct 2010 08:47:22 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,30 +0,0 @@ -$OpenBSD: patch-pound_h,v 1.1 2010/10/04 08:47:22 sthen Exp $ - -fix for openssl 1.0 -http://www.apsis.ch/pound/pound_list/archive/2010/2010-02/1266065082000 - ---- pound.h.orig Tue Feb 2 11:49:02 2010 -+++ pound.h Sun Oct 3 23:27:58 2010 -@@ -322,6 +322,10 @@ typedef struct _tn { - /* maximal session key size */ - #define KEY_SIZE 127 - -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+DECLARE_LHASH_OF(TABNODE); -+#endif -+ - /* service definition */ - typedef struct _service { - char name[KEY_SIZE + 1]; /* symbolic name */ -@@ -337,7 +341,11 @@ typedef struct _service { - int sess_ttl; /* session time-to-live */ - regex_t sess_start; /* pattern to identify the session data */ - regex_t sess_pat; /* pattern to match the session data */ -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ LHASH_OF(TABNODE) *sessions; /* currently active sessions */ -+#else - LHASH *sessions; /* currently active sessions */ -+#endif - int dynscale; /* true if the back-ends should be dynamically rescaled */ - int disabled; /* true if the service is disabled */ - struct _service *next; Index: patches/patch-svc_c =================================================================== RCS file: patches/patch-svc_c diff -N patches/patch-svc_c --- patches/patch-svc_c 4 Oct 2010 08:47:22 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,230 +0,0 @@ -$OpenBSD: patch-svc_c,v 1.1 2010/10/04 08:47:22 sthen Exp $ - -fix for openssl 1.0 -http://www.apsis.ch/pound/pound_list/archive/2010/2010-02/1266065082000 - ---- svc.c.orig Tue Feb 2 11:49:02 2010 -+++ svc.c Sun Oct 3 23:27:58 2010 -@@ -27,12 +27,17 @@ - - #include "pound.h" - -+#ifndef LHASH_OF -+#define LHASH_OF(x) LHASH -+#define CHECKED_LHASH_OF(type, h) h -+#endif -+ - /* - * Add a new key/content pair to a hash table - * the table should be already locked - */ - static void --t_add(LHASH *const tab, const char *key, const void *content, const size_t cont_len) -+t_add(LHASH_OF(TABNODE) *const tab, const char *key, const void *content, const size_t cont_len) - { - TABNODE *t, *old; - -@@ -53,7 +58,11 @@ t_add(LHASH *const tab, const char *key, const void *c - } - memcpy(t->content, content, cont_len); - t->last_acc = time(NULL); -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ if((old = LHM_lh_insert(TABNODE, tab, t)) != NULL) { -+#else - if((old = (TABNODE *)lh_insert(tab, t)) != NULL) { -+#endif - free(old->key); - free(old->content); - free(old); -@@ -68,12 +77,16 @@ t_add(LHASH *const tab, const char *key, const void *c - * side-effect: update the time of last access - */ - static void * --t_find(LHASH *const tab, char *const key) -+t_find(LHASH_OF(TABNODE) *const tab, char *const key) - { - TABNODE t, *res; - - t.key = key; -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ if((res = LHM_lh_retrieve(TABNODE, tab, &t)) != NULL) { -+#else - if((res = (TABNODE *)lh_retrieve(tab, &t)) != NULL) { -+#endif - res->last_acc = time(NULL); - return res->content; - } -@@ -84,12 +97,16 @@ t_find(LHASH *const tab, char *const key) - * Delete a key - */ - static void --t_remove(LHASH *const tab, char *const key) -+t_remove(LHASH_OF(TABNODE) *const tab, char *const key) - { - TABNODE t, *res; - - t.key = key; -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ if((res = LHM_lh_delete(TABNODE, tab, &t)) != NULL) { -+#else - if((res = (TABNODE *)lh_delete(tab, &t)) != NULL) { -+#endif - free(res->key); - free(res->content); - free(res); -@@ -98,59 +115,75 @@ t_remove(LHASH *const tab, char *const key) - } - - typedef struct { -- LHASH *tab; -+ LHASH_OF(TABNODE) *tab; - time_t lim; - void *content; - int cont_len; - } ALL_ARG; - - static void --t_old(TABNODE *t, void *arg) -+t_old_doall_arg(TABNODE *t, ALL_ARG *a) - { -- ALL_ARG *a; -- -- a = (ALL_ARG *)arg; - if(t->last_acc < a->lim) -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ LHM_lh_delete(TABNODE, a->tab, t); -+#else - lh_delete(a->tab, t); -+#endif - return; - } --IMPLEMENT_LHASH_DOALL_ARG_FN(t_old, TABNODE *, void *) -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+IMPLEMENT_LHASH_DOALL_ARG_FN(t_old, TABNODE, ALL_ARG) -+#else -+#define t_old t_old_doall_arg -+IMPLEMENT_LHASH_DOALL_ARG_FN(t_old, TABNODE *, ALL_ARG *) -+#endif - - /* - * Expire all old nodes - */ - static void --t_expire(LHASH *const tab, const time_t lim) -+t_expire(LHASH_OF(TABNODE) *const tab, const time_t lim) - { - ALL_ARG a; - int down_load; - - a.tab = tab; - a.lim = lim; -- down_load = tab->down_load; -- tab->down_load = 0; -+ down_load = CHECKED_LHASH_OF(TABNODE, tab)->down_load; -+ CHECKED_LHASH_OF(TABNODE, tab)->down_load = 0; -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ LHM_lh_doall_arg(TABNODE, tab, LHASH_DOALL_ARG_FN(t_old), ALL_ARG, &a); -+#else - lh_doall_arg(tab, LHASH_DOALL_ARG_FN(t_old), &a); -- tab->down_load = down_load; -+#endif -+ CHECKED_LHASH_OF(TABNODE, tab)->down_load = down_load; - return; - } - - static void --t_cont(TABNODE *t, void *arg) -+t_cont_doall_arg(TABNODE *t, ALL_ARG *a) - { -- ALL_ARG *a; -- -- a = (ALL_ARG *)arg; - if(memcmp(t->content, a->content, a->cont_len) == 0) -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ LHM_lh_delete(TABNODE, a->tab, t); -+#else - lh_delete(a->tab, t); -+#endif - return; - } --IMPLEMENT_LHASH_DOALL_ARG_FN(t_cont, TABNODE *, void *) -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+IMPLEMENT_LHASH_DOALL_ARG_FN(t_cont, TABNODE, ALL_ARG) -+#else -+#define t_cont t_cont_doall_arg -+IMPLEMENT_LHASH_DOALL_ARG_FN(t_cont, TABNODE *, ALL_ARG *) -+#endif - - /* - * Remove all nodes with the given content - */ - static void --t_clean(LHASH *const tab, void *const content, const size_t cont_len) -+t_clean(LHASH_OF(TABNODE) *const tab, void *const content, const size_t cont_len) - { - ALL_ARG a; - int down_load; -@@ -158,10 +191,14 @@ t_clean(LHASH *const tab, void *const content, const s - a.tab = tab; - a.content = content; - a.cont_len = cont_len; -- down_load = tab->down_load; -- tab->down_load = 0; -+ down_load = CHECKED_LHASH_OF(TABNODE, tab)->down_load; -+ CHECKED_LHASH_OF(TABNODE, tab)->down_load = 0; -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ LHM_lh_doall_arg(TABNODE, tab, LHASH_DOALL_ARG_FN(t_cont), ALL_ARG, &a); -+#else - lh_doall_arg(tab, LHASH_DOALL_ARG_FN(t_cont), &a); -- tab->down_load = down_load; -+#endif -+ CHECKED_LHASH_OF(TABNODE, tab)->down_load = down_load; - return; - } - -@@ -1410,13 +1447,11 @@ typedef struct { - } DUMP_ARG; - - static void --t_dump(TABNODE *t, void *arg) -+t_dump_doall_arg(TABNODE *t, DUMP_ARG *a) - { -- DUMP_ARG *a; - BACKEND *be, *bep; - int n_be, sz; - -- a = (DUMP_ARG *)arg; - memcpy(&bep, t->content, sizeof(bep)); - for(n_be = 0, be = a->backends; be; be = be->next, n_be++) - if(be == bep) -@@ -1432,19 +1467,28 @@ t_dump(TABNODE *t, void *arg) - return; - } - --IMPLEMENT_LHASH_DOALL_ARG_FN(t_dump, TABNODE *, void *) -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+IMPLEMENT_LHASH_DOALL_ARG_FN(t_dump, TABNODE, DUMP_ARG) -+#else -+#define t_dump t_dump_doall_arg -+IMPLEMENT_LHASH_DOALL_ARG_FN(t_dump, TABNODE *, DUMP_ARG *) -+#endif - - /* - * write sessions to the control socket - */ - static void --dump_sess(const int control_sock, LHASH *const sess, BACKEND *const backends) -+dump_sess(const int control_sock, LHASH_OF(TABNODE) *const sess, BACKEND *const backends) - { - DUMP_ARG a; - - a.control_sock = control_sock; - a.backends = backends; -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ LHM_lh_doall_arg(TABNODE, sess, LHASH_DOALL_ARG_FN(t_dump), DUMP_ARG, &a); -+#else - lh_doall_arg(sess, LHASH_DOALL_ARG_FN(t_dump), &a); -+#endif - return; - } - ----- End forwarded message ----- -- Sending from my VCR...
