From 47820253bc995823e85a78b84a36156c4b3425f4 Mon Sep 17 00:00:00 2001 From: Michael Krelin Date: Sat, 28 Jul 2007 16:28:32 +0000 Subject: net-im/jabberd: revbump along with pulling plumbings and fixes from svn/git besides trunk changes that would include postgresql detection code and postgresql `conninfo` configuration. Signed-off-by: Michael Krelin --- diff --git a/net-im/jabberd/Manifest b/net-im/jabberd/Manifest index 39ed68c..9af6591 100644 --- a/net-im/jabberd/Manifest +++ b/net-im/jabberd/Manifest @@ -1,3 +1,7 @@ +AUX jabberd-2.1.11-r1.patch 9979 RMD160 bbd543765e41264e544948983e7193b8d50b9b88 SHA1 4e2b56baf5167ec0b3df31757bfe635a58055b55 SHA256 1b5dace5ba604a37e40637ff22eb856daad4f8504fff5337ffb9ffd77298d3bc +MD5 2ee77f6ead80438a246b58de2b0ab73f files/jabberd-2.1.11-r1.patch 9979 +RMD160 bbd543765e41264e544948983e7193b8d50b9b88 files/jabberd-2.1.11-r1.patch 9979 +SHA256 1b5dace5ba604a37e40637ff22eb856daad4f8504fff5337ffb9ffd77298d3bc files/jabberd-2.1.11-r1.patch 9979 AUX jabberd-2.1.11.init 1404 RMD160 d93784cc30f573f20cd411a1a18578db46121b26 SHA1 ce0e735adbf539c809568aa2c1d3ee49f565600c SHA256 e9d004e8d83cc59f964b49c44aaf64445593ba8157d4b51df83e5e50f4625094 MD5 eacd752c3b8eb5f2d4914ca8b3580893 files/jabberd-2.1.11.init 1404 RMD160 d93784cc30f573f20cd411a1a18578db46121b26 files/jabberd-2.1.11.init 1404 @@ -7,10 +11,10 @@ MD5 ab77cef855566260d6a779d8d77bc78c files/jabberd-2.1.11.pamd 158 RMD160 3143cb1689fbebb51c0d72fa4c6b79ee9c015185 files/jabberd-2.1.11.pamd 158 SHA256 eba4b5cc68b3dd327cfa1afdadbe5adf6d9383f4c79c7661169a4339e40b9a7b files/jabberd-2.1.11.pamd 158 DIST jabberd-2.1.11.tar.bz2 1034039 RMD160 540f9f510351c369938005acb7013ea41d77f5b8 SHA1 528df89fd1fc638590811bb4f14b2d0d8a498a56 SHA256 e99a70102896ce28e5e427234ddaa852aacd8a38700264741a40f5781919bea8 -EBUILD jabberd-2.1.11.ebuild 2688 RMD160 f7166de5a66dc79a885c2f2cd610af45502ec2b2 SHA1 6d72283c1aa82882d2705f75b0b1f04c68ab06c0 SHA256 dacb39449544c1a991ab627bdcd6781bc08d171083c9b2a42b398e780c38214e -MD5 0a085e6e7ae3903b388c469fe60092af jabberd-2.1.11.ebuild 2688 -RMD160 f7166de5a66dc79a885c2f2cd610af45502ec2b2 jabberd-2.1.11.ebuild 2688 -SHA256 dacb39449544c1a991ab627bdcd6781bc08d171083c9b2a42b398e780c38214e jabberd-2.1.11.ebuild 2688 +EBUILD jabberd-2.1.11-r1.ebuild 2931 RMD160 b853d8d199905d0048a856765aeae27f982453ff SHA1 b0e7159bd13439320fdc4d72c0fe5e4ee8dac6bd SHA256 aa07d173367d7509a04f6482f29c36b9878956fc0542cd65dd539962c97079cb +MD5 38355a04b1112de9d828ba25118a87ad jabberd-2.1.11-r1.ebuild 2931 +RMD160 b853d8d199905d0048a856765aeae27f982453ff jabberd-2.1.11-r1.ebuild 2931 +SHA256 aa07d173367d7509a04f6482f29c36b9878956fc0542cd65dd539962c97079cb jabberd-2.1.11-r1.ebuild 2931 MISC ChangeLog 15464 RMD160 bac8facc410dced776f4b5d9f0c4b051100f9409 SHA1 2ed0d2fa838de3b4e1d720f577116af6eba842ec SHA256 7ea8ffdf9c099ca3fc43ccb381100ce6b519de8f6bb582305535491373fb8830 MD5 e71dbcd3a38fc84fc22dac39a6019359 ChangeLog 15464 RMD160 bac8facc410dced776f4b5d9f0c4b051100f9409 ChangeLog 15464 @@ -19,6 +23,6 @@ MISC metadata.xml 399 RMD160 e223c713f74619996bc47a70298aa535f6addf09 SHA1 dc9bc MD5 be8887bde84aab1d4ff9d5a0f5d50141 metadata.xml 399 RMD160 e223c713f74619996bc47a70298aa535f6addf09 metadata.xml 399 SHA256 f68b0864864ad54de5cf072835fc9903e709987261ad1fc102afb0019aa52377 metadata.xml 399 -MD5 c07f7b9a6581fa2f5ea895378ce7f7de files/digest-jabberd-2.1.11 250 -RMD160 cb7aaed13753b29cc9f5a1bce8487647ae3a39f2 files/digest-jabberd-2.1.11 250 -SHA256 6d1563e8ca5a90c87768d01e273bfd6cfbe11c93ff70249fb71eeb074b090a39 files/digest-jabberd-2.1.11 250 +MD5 c07f7b9a6581fa2f5ea895378ce7f7de files/digest-jabberd-2.1.11-r1 250 +RMD160 cb7aaed13753b29cc9f5a1bce8487647ae3a39f2 files/digest-jabberd-2.1.11-r1 250 +SHA256 6d1563e8ca5a90c87768d01e273bfd6cfbe11c93ff70249fb71eeb074b090a39 files/digest-jabberd-2.1.11-r1 250 diff --git a/net-im/jabberd/files/digest-jabberd-2.1.11 b/net-im/jabberd/files/digest-jabberd-2.1.11-r1 index ae7be5e..ae7be5e 100644 --- a/net-im/jabberd/files/digest-jabberd-2.1.11 +++ b/net-im/jabberd/files/digest-jabberd-2.1.11-r1 diff --git a/net-im/jabberd/files/jabberd-2.1.11-r1.patch b/net-im/jabberd/files/jabberd-2.1.11-r1.patch new file mode 100644 index 0000000..441163c --- a/dev/null +++ b/net-im/jabberd/files/jabberd-2.1.11-r1.patch @@ -0,0 +1,251 @@ +diff --git a/c2s/main.c b/c2s/main.c +index a86e571..0bf89e6 100644 +--- a/c2s/main.c ++++ b/c2s/main.c +@@ -698,6 +698,7 @@ JABBER_MAIN("jabberd2c2s", "Jabber 2 C2S", "Jabber Open Source Server: Client to + if(sess->ip != NULL) free(sess->ip); + if(sess->result != NULL) nad_free(sess->result); + if(sess->jid != NULL) jid_free(sess->jid); ++ if(sess->rate != NULL) rate_free(sess->rate); + + free(sess); + } +diff --git a/configure.ac b/configure.ac +index 099aec9..29dca26 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -494,37 +494,48 @@ AM_CONDITIONAL(STORAGE_MYSQL, [test "x-$have_mysql" = "x-yes"]) + + # PostgreSQL + AC_ARG_ENABLE([pgsql], +- AC_HELP_STRING([--enable-pgsql], [enable PostgreSQL auth/reg/storage support (no)]), +- [enable_pgsql=$enableval have_pgsql=no], ++ AC_HELP_STRING([--enable-pgsql], ++ [enable PostgreSQL auth/reg/storage support, you can provide path to ++ pg_config executable (no)]), ++ [enable_pgsql="$enableval" have_pgsql=no], + [enable_pgsql=no have_pgsql=no]) +-if test "x-$enable_pgsql" = "x-yes" ; then +- for i in /usr /usr/local /usr/local/pgsql ; do +- for j in include include/pgsql include/postgres include/postgresql "" ; do +- if test -r "$i/$j/libpq-fe.h" ; then +- PGSQL_INCLUDE=$i/$j +- fi +- done +- for lib in lib lib64 ; do +- for j in $lib $lib/pgsql $lib/postgres $lib/postgresql "" ; do +- if test -f "$i/$j/libpq.so" || test -f "$i/$j/libpq.a" ; then +- PGSQL_LIBDIR=$i/$j +- fi +- done +- done +- done +- AC_CHECK_LIB([pq], [PQsetdbLogin], [ +- have_pgsql=yes +- if test "x-$PGSQL_INCLUDE" != "x-"; then +- PGSQL_CFLAGS="-I $PGSQL_INCLUDE" +- fi +- if test "x-$PGSQL_LIBDIR" != "x-"; then +- PGSQL_LIBS="-L$PGSQL_LIBDIR -lpq" +- fi +- AC_DEFINE(STORAGE_POSTGRES, 1, [Define to 1 if you want to use PostgreSQL for storage.]) +- ]) +- if test "x-$have_pgsql" != "x-yes" ; then +- AC_MSG_ERROR([PostgreSQL support requested, but headers/libraries not found.]) +- fi ++if test "x-$enable_pgsql" != "x-no" ; then ++ if test -x "$enable_pgsql" ; then ++ PGSQL_INCLUDE="$($enable_pgsql --includedir)" ++ PGSQL_LIBDIR="$($enable_pgsql --libdir)" ++ PGSQL_CFLAGS="-I$PGSQL_INCLUDE" ++ PGSQL_LIBS="-L$PGSQL_LIBDIR -lpq" ++ have_pgsql=yes ++ AC_DEFINE([STORAGE_POSTGRES],[1],[Define to 1 if you want to use PostgreSQL for storage.]) ++ else # leave legacy detection intact for now ++ for i in /usr /usr/local /usr/local/pgsql ; do ++ for j in include include/pgsql include/postgres include/postgresql "" ; do ++ if test -r "$i/$j/libpq-fe.h" ; then ++ PGSQL_INCLUDE=$i/$j ++ fi ++ done ++ for lib in lib lib64 ; do ++ for j in $lib $lib/pgsql $lib/postgres $lib/postgresql "" ; do ++ if test -f "$i/$j/libpq.so" || test -f "$i/$j/libpq.a" ; then ++ PGSQL_LIBDIR=$i/$j ++ fi ++ done ++ done ++ done ++ AC_CHECK_LIB([pq], [PQsetdbLogin], [ ++ have_pgsql=yes ++ if test "x-$PGSQL_INCLUDE" != "x-"; then ++ PGSQL_CFLAGS="-I $PGSQL_INCLUDE" ++ fi ++ if test "x-$PGSQL_LIBDIR" != "x-"; then ++ PGSQL_LIBS="-L$PGSQL_LIBDIR -lpq" ++ fi ++ AC_DEFINE(STORAGE_POSTGRES, 1, [Define to 1 if you want to use PostgreSQL for storage.]) ++ ]) ++ if test "x-$have_pgsql" != "x-yes" ; then ++ AC_MSG_ERROR([PostgreSQL support requested, but headers/libraries not found.]) ++ fi ++ fi + fi + AC_SUBST(PGSQL_CFLAGS) + AC_SUBST(PGSQL_LIBS) +diff --git a/mio/mio_impl.h b/mio/mio_impl.h +index 6f72a5c..cabdc67 100644 +--- a/mio/mio_impl.h ++++ b/mio/mio_impl.h +@@ -226,8 +226,12 @@ static void _mio_run(mio_t m, int timeout) + { + mio_fd_t fd = MIO_ITERATOR_FD(m,iter); + +- /* skip dead slots */ +- if(FD(m,fd)->type == type_CLOSED) continue; ++ /* deferred closing fd */ ++ if(FD(m,fd)->type == type_CLOSED) ++ { ++ MIO_FREE_FD(m, fd); ++ continue; ++ } + + /* new conns on a listen socket */ + if(FD(m,fd)->type == type_LISTEN && MIO_CAN_READ(m,iter)) +@@ -259,12 +263,6 @@ static void _mio_run(mio_t m, int timeout) + if(ACT(m, fd, action_WRITE, NULL) == 0) + MIO_UNSET_WRITE(m, FD(m,fd)); + } +- +- /* deferred closing fd */ +- if(FD(m,fd)->type == type_CLOSED) +- { +- MIO_FREE_FD(m, fd); +- } + } + } + +diff --git a/sm/main.c b/sm/main.c +index 2f1439d..9f27829 100644 +--- a/sm/main.c ++++ b/sm/main.c +@@ -392,6 +392,7 @@ JABBER_MAIN("jabberd2sm", "Jabber 2 Session Manager", "Jabber Open Source Server + xhash_free(sm->acls); + xhash_free(sm->features); + xhash_free(sm->xmlns); ++ xhash_free(sm->xmlns_refcount); + xhash_free(sm->users); + + sx_free(sm->router); +diff --git a/sm/mod_privacy.c b/sm/mod_privacy.c +index 06f9e6e..5abf065 100644 +--- a/sm/mod_privacy.c ++++ b/sm/mod_privacy.c +@@ -205,7 +205,7 @@ static int _privacy_user_load(mod_instance_t mi, user_t user) { + continue; + } + +- pool_cleanup(zlist->p, free, zitem->jid); ++ pool_cleanup(zlist->p, jid_free, zitem->jid); + + log_debug(ZONE, "jid item with value '%s'", jid_full(zitem->jid)); + +@@ -696,7 +696,7 @@ static mod_ret_t _privacy_in_sess(mod_instance_t mi, sess_t sess, pkt_t pkt) { + return -stanza_err_BAD_REQUEST; + } + +- pool_cleanup(p, free, zitem->jid); ++ pool_cleanup(p, jid_free, zitem->jid); + + log_debug(ZONE, "jid item with value '%s'", jid_full(zitem->jid)); + +diff --git a/storage/authreg_pgsql.c b/storage/authreg_pgsql.c +index 1f15e83..8d3cf88 100644 +--- a/storage/authreg_pgsql.c ++++ b/storage/authreg_pgsql.c +@@ -304,7 +304,7 @@ int _ar_pgsql_check_sql( authreg_t ar, char * sql, char * types ) { + + /** start me up */ + int ar_init(authreg_t ar) { +- char *host, *port, *dbname, *user, *pass; ++ char *host, *port, *dbname, *user, *pass, *conninfo; + char *create, *select, *setpassword, *delete; + char *table, *username, *realm; + char *template; +@@ -391,15 +391,22 @@ int ar_init(authreg_t ar) { + free(setpassword); + free(delete); + +- host = config_get_one(ar->c2s->config, "authreg.pgsql.host", 0); +- port = config_get_one(ar->c2s->config, "authreg.pgsql.port", 0); +- dbname = config_get_one(ar->c2s->config, "authreg.pgsql.dbname", 0); +- user = config_get_one(ar->c2s->config, "authreg.pgsql.user", 0); +- pass = config_get_one(ar->c2s->config, "authreg.pgsql.pass", 0); +- +- log_debug( ZONE, "pgsql connecting as '%s' to database '%s' on %s:%s", user, dbname, host, port ); ++ conninfo = config_get_one(ar->c2s->config,"authreg.pgsql.conninfo",0); ++ if(conninfo) { ++ conn = PQconnect(conninfo); ++ /* don't log connection info for it can contain password */ ++ log_debug( ZONE, "pgsql connecting to the databse"); ++ }else{ ++ /* compatibility settings */ ++ host = config_get_one(ar->c2s->config, "authreg.pgsql.host", 0); ++ port = config_get_one(ar->c2s->config, "authreg.pgsql.port", 0); ++ dbname = config_get_one(ar->c2s->config, "authreg.pgsql.dbname", 0); ++ user = config_get_one(ar->c2s->config, "authreg.pgsql.user", 0); ++ pass = config_get_one(ar->c2s->config, "authreg.pgsql.pass", 0); ++ log_debug( ZONE, "pgsql connecting as '%s' to database '%s' on %s:%s", user, dbname, host, port ); ++ conn = PQsetdbLogin(host, port, NULL, NULL, dbname, user, pass); ++ } + +- conn = PQsetdbLogin(host, port, NULL, NULL, dbname, user, pass); + if(conn == NULL) { + log_write(ar->c2s->log, LOG_ERR, "pgsql: unable to allocate database connection state"); + return 1; +diff --git a/sx/sasl_gsasl.c b/sx/sasl_gsasl.c +index 69eeec2..0036c0f 100644 +--- a/sx/sasl_gsasl.c ++++ b/sx/sasl_gsasl.c +@@ -338,6 +338,7 @@ static void _sx_sasl_client_process(sx_t s, sx_plugin_t p, Gsasl_session *sd, ch + if(ret != GSASL_OK && ret != GSASL_NEEDS_MORE) { + _sx_debug(ZONE, "gsasl_step failed, no sasl for this conn; (%d): %s", ret, gsasl_strerror(ret)); + _sx_nad_write(s, _sx_sasl_failure(s, _sasl_err_MALFORMED_REQUEST), 0); ++ if(buf != NULL) free(buf); + return; + } + } +@@ -350,6 +351,7 @@ static void _sx_sasl_client_process(sx_t s, sx_plugin_t p, Gsasl_session *sd, ch + if(ret != GSASL_OK && ret != GSASL_NEEDS_MORE) { + _sx_debug(ZONE, "gsasl_step failed, no sasl for this conn; (%d): %s", ret, gsasl_strerror(ret)); + _sx_nad_write(s, _sx_sasl_failure(s, _sasl_err_MALFORMED_REQUEST), 0); ++ if(buf != NULL) free(buf); + return; + } + +diff --git a/util/jid.c b/util/jid.c +index 695b15f..f4b0021 100644 +--- a/util/jid.c ++++ b/util/jid.c +@@ -332,7 +332,7 @@ static jid_t jid_reset_components_internal(jid_t jid, const unsigned char *node, + else { + /* allocate new data buffer */ + jid->jid_data_len = node_l+domain_l+resource_l+3; +- jid->jid_data = malloc(jid->jid_data_len); ++ jid->jid_data = realloc(jid->jid_data, jid->jid_data_len); + } + + /* copy to buffer */ +diff --git a/util/nad.c b/util/nad.c +index 2ac8670..eec3c17 100644 +--- a/util/nad.c ++++ b/util/nad.c +@@ -61,7 +61,7 @@ static void _nad_ptr_check(const char *func, nad_t nad) { + #define _nad_ptr_check(func,nad) + #endif + +-#define BLOCKSIZE 1024 ++#define BLOCKSIZE 128 + + /** internal: do and return the math and ensure it gets realloc'd */ + static int _nad_realloc(void **oblocks, int len) diff --git a/net-im/jabberd/jabberd-2.1.11.ebuild b/net-im/jabberd/jabberd-2.1.11-r1.ebuild index c4b19cb..9445d07 100644 --- a/net-im/jabberd/jabberd-2.1.11.ebuild +++ b/net-im/jabberd/jabberd-2.1.11-r1.ebuild @@ -2,7 +2,9 @@ # Distributed under the terms of the GNU General Public License v2 # $Header: $ -inherit pam eutils +WANT_AUTOCONF="lastest" +WANT_AUTOMAKE="none" +inherit pam eutils postgresql autotools DESCRIPTION="Open Source Jabber Server" HOMEPAGE="http://jabberd2.xiaoka.com/" @@ -25,12 +27,21 @@ RDEPEND=">=net-im/jabber-base-0.01 dev-libs/cyrus-sasl" DEPEND="${RDEPEND}" +src_unpack() { + unpack $A + cd "$S" + epatch "${FILESDIR}/${PF}.patch" + eautoreconf +} + src_compile() { if use memdebug && ! use debug ; then ewarn '"memdebug" requires "debug"' fi + local pgconfigbin + use postgres && pgconfigbin="$(postgresql_get_pgconfig)" # gsasl backend is disabled due to the lack of proper gsasl in the tree # TODO: rework postgres part in configure.ac # TODO: conditionally add extra include path for db_includedir from @@ -43,7 +54,7 @@ src_compile() { --enable-sasl=cyrus \ $(use_enable ssl) \ $(use_enable mysql) \ - $(use_enable postgres pgsql) \ + $(use_enable postgres pgsql "$pgconfigbin") \ $(use_enable sqlite) \ $(use_enable berkdb db) \ $(use_enable ldap) \ -- cgit v0.9.0.2