You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2014/05/23 19:00:06 UTC
svn commit: r1597126 - in /qpid/dispatch/trunk/src: alloc.c server.c
Author: tross
Date: Fri May 23 17:00:06 2014
New Revision: 1597126
URL: http://svn.apache.org/r1597126
Log:
DISPATCH-46 - Don't dereference a null connector in listen
Modified:
qpid/dispatch/trunk/src/alloc.c
qpid/dispatch/trunk/src/server.c
Modified: qpid/dispatch/trunk/src/alloc.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/alloc.c?rev=1597126&r1=1597125&r2=1597126&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/alloc.c (original)
+++ qpid/dispatch/trunk/src/alloc.c Fri May 23 17:00:06 2014
@@ -321,7 +321,7 @@ void qd_alloc_finalize(void)
// Check the stats for lost items
//
if (desc->stats->total_free_to_heap < desc->stats->total_alloc_from_heap)
- fprintf(stderr, "alloc.c: Items of type '%s' remain allocated at shutdown: %"PRIx64"\n",
+ fprintf(stderr, "alloc.c: Items of type '%s' remain allocated at shutdown: %"PRId64"\n",
desc->type_name,
desc->stats->total_alloc_from_heap - desc->stats->total_free_to_heap);
Modified: qpid/dispatch/trunk/src/server.c
URL: http://svn.apache.org/viewvc/qpid/dispatch/trunk/src/server.c?rev=1597126&r1=1597125&r2=1597126&view=diff
==============================================================================
--- qpid/dispatch/trunk/src/server.c (original)
+++ qpid/dispatch/trunk/src/server.c Fri May 23 17:00:06 2014
@@ -56,12 +56,15 @@ static qd_thread_t *thread(qd_server_t *
static void thread_process_listeners(qd_server_t *qd_server)
{
pn_driver_t *driver = qd_server->driver;
- pn_listener_t *listener = pn_driver_listener(driver);
+ pn_listener_t *listener;
pn_connector_t *cxtr;
qd_connection_t *ctx;
- while (listener) {
+ for (listener = pn_driver_listener(driver); listener; listener = pn_driver_listener(driver)) {
cxtr = pn_listener_accept(listener);
+ if (!cxtr)
+ continue;
+
qd_log(qd_server->log_source, QD_LOG_TRACE, "Accepting Connection from %s", pn_connector_name(cxtr));
ctx = new_qd_connection_t();
DEQ_ITEM_INIT(ctx);
@@ -135,7 +138,6 @@ static void thread_process_listeners(qd_
pn_sasl_done(sasl, PN_SASL_OK); // TODO - This needs to go away
pn_connector_set_context(cxtr, ctx);
- listener = pn_driver_listener(driver);
}
}
@@ -933,6 +935,9 @@ qd_listener_t *qd_server_listen(qd_dispa
void qd_server_listener_free(qd_listener_t* li)
{
+ if (!li)
+ return;
+
pn_listener_free(li->pn_listener);
free_qd_listener_t(li);
}
@@ -970,6 +975,9 @@ void qd_server_connector_free(qd_connect
// Don't free the proton connector. This will be done by the connector
// processing/cleanup.
+ if (!ct)
+ return;
+
if (ct->ctx) {
pn_connector_close(ct->ctx->pn_cxtr);
ct->ctx->connector = 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org