summaryrefslogtreecommitdiff
authorMichael Krelin <hacker@klever.net>2007-07-28 18:20:38 (UTC)
committer Michael Krelin <hacker@klever.net>2007-07-28 18:20:38 (UTC)
commit2046805030295f646052c635e525a4ae2ec787cc (patch) (side-by-side diff)
treebd37e6580e722da2c3dba427d2b5d9641443b394
parent47820253bc995823e85a78b84a36156c4b3425f4 (diff)
downloadmisc-2046805030295f646052c635e525a4ae2ec787cc.zip
misc-2046805030295f646052c635e525a4ae2ec787cc.tar.gz
misc-2046805030295f646052c635e525a4ae2ec787cc.tar.bz2
net-im/jabberd: fixed patch
Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--net-im/jabberd/files/jabberd-2.1.11-r1.patch20
1 files changed, 18 insertions, 2 deletions
diff --git a/net-im/jabberd/files/jabberd-2.1.11-r1.patch b/net-im/jabberd/files/jabberd-2.1.11-r1.patch
index 441163c..6eba147 100644
--- a/net-im/jabberd/files/jabberd-2.1.11-r1.patch
+++ b/net-im/jabberd/files/jabberd-2.1.11-r1.patch
@@ -48,191 +48,207 @@ index 099aec9..29dca26 100644
- 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/etc/c2s.xml.dist.in b/etc/c2s.xml.dist.in
+index 873a133..0589ada 100644
+--- a/etc/c2s.xml.dist.in
++++ b/etc/c2s.xml.dist.in
+@@ -325,6 +325,11 @@
+
+ <!-- PostgreSQL module configuration -->
+ <pgsql>
++ <!-- PostgreSQL connection info -->
++ <conninfo>dbname=jabberd2 user=jabberd2 password=secret</conninfo>
++
++ <!-- The rest of connection settings are used only in absence of 'conninfo' -->
++
+ <!-- Database server host and port -->
+ <host>localhost</host>
+ <port>5432</port>
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
+index 1f15e83..cb68e7d 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");
++ conn = PQconnectdb(conninfo);
+ }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 */