[asterisk-commits] file: trunk r184677 - /trunk/bridges/bridge_softmix.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Mar 27 10:57:31 CDT 2009
Author: file
Date: Fri Mar 27 10:57:28 2009
New Revision: 184677
URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=184677
Log:
Fix a potential timer leak in bridge_softmix.
It is possible for a bridge to be created without actually being used.
In that scenario a timing file descriptor would be opened and not
closed. To fix this the timing file descriptor is now closed in the
destroy callback, not the thread function.
Modified:
trunk/bridges/bridge_softmix.c
Modified: trunk/bridges/bridge_softmix.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/bridges/bridge_softmix.c?view=diff&rev=184677&r1=184676&r2=184677
==============================================================================
--- trunk/bridges/bridge_softmix.c (original)
+++ trunk/bridges/bridge_softmix.c Fri Mar 27 10:57:28 2009
@@ -96,6 +96,16 @@
return 0;
}
+/*! \brief Function called when a bridge is destroyed */
+static int softmix_bridge_destroy(struct ast_bridge *bridge)
+{
+ int timingfd = (unsigned long)bridge->bridge_pvt;
+
+ ast_timer_close(timingfd);
+
+ return 0;
+}
+
/*! \brief Function called when a channel is joined into the bridge */
static int softmix_bridge_join(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel)
{
@@ -263,8 +273,6 @@
ao2_lock(bridge);
}
- ast_timer_close(timingfd);
-
return 0;
}
@@ -278,6 +286,7 @@
.formats = AST_FORMAT_SLINEAR,
#endif
.create = softmix_bridge_create,
+ .destroy = softmix_bridge_destroy,
.join = softmix_bridge_join,
.leave = softmix_bridge_leave,
.write = softmix_bridge_write,
More information about the asterisk-commits
mailing list