[sr-dev] git:master: modules_k/pua: transaction not ended before calling send_publish() from TM call-back

Peter Dunkley peter.dunkley at crocodile-rcs.com
Tue Aug 21 16:22:32 CEST 2012


Module: sip-router
Branch: master
Commit: b9e77beaee850303ffa736cb4043d21a1806fa4f
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=b9e77beaee850303ffa736cb4043d21a1806fa4f

Author: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Committer: Peter Dunkley <peter.dunkley at crocodile-rcs.com>
Date:   Tue Aug 21 15:21:03 2012 +0100

modules_k/pua: transaction not ended before calling send_publish() from TM call-back

- Found by Hugh Waite @ Crocodile RCS and fixed by Peter Dunkley
  @ Crocodile RCS

---

 modules_k/pua/send_publish.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/modules_k/pua/send_publish.c b/modules_k/pua/send_publish.c
index 3bc8702..97935c1 100644
--- a/modules_k/pua/send_publish.c
+++ b/modules_k/pua/send_publish.c
@@ -207,6 +207,7 @@ void publ_cback_func(struct cell *t, int type, struct tmcb_params *ps)
 	db1_res_t *res=NULL;
 	ua_pres_t dbpres;
 	str pres_uri={0,0}, watcher_uri={0,0}, extra_headers={0,0};
+	int end_transaction = 1;
 
 	memset(&dbpres, 0, sizeof(dbpres));
 	dbpres.pres_uri = &pres_uri;
@@ -275,6 +276,17 @@ void publ_cback_func(struct cell *t, int type, struct tmcb_params *ps)
 			publ.extra_headers= hentity->extra_headers;
 			publ.cb_param= hentity->cb_param;
 
+			if (dbmode == PUA_DB_ONLY && pua_dbf.end_transaction)
+			{
+				if (pua_dbf.end_transaction(pua_db) < 0)
+				{
+					LM_ERR("in end_transaction\n");
+					goto error;
+				}
+			}
+
+			end_transaction = 0;
+
 			if(send_publish(&publ)< 0)
 			{
 				LM_ERR("when trying to send PUBLISH\n");
@@ -432,7 +444,7 @@ done:
 
 	if (res) free_results_puadb(res);
 
-	if (dbmode == PUA_DB_ONLY && pua_dbf.end_transaction)
+	if (dbmode == PUA_DB_ONLY && pua_dbf.end_transaction && end_transaction)
 	{
 		if (pua_dbf.end_transaction(pua_db) < 0)
 		{




More information about the sr-dev mailing list