summaryrefslogtreecommitdiff
path: root/pjmedia/src/pjmedia/transport_udp.c
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2017-01-23 04:32:34 +0000
committerNanang Izzuddin <nanang@teluu.com>2017-01-23 04:32:34 +0000
commitf6d78bf855f2d564f9e383508908631a4668e2af (patch)
tree223bd69531113c5069679f9a6d482c03863284c9 /pjmedia/src/pjmedia/transport_udp.c
parentdfe36134873cb77d5b9c2a999f3134eb79f6ca6e (diff)
Re #1900: Reintegrated works in UWP branch to trunk.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5539 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src/pjmedia/transport_udp.c')
-rw-r--r--pjmedia/src/pjmedia/transport_udp.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/pjmedia/src/pjmedia/transport_udp.c b/pjmedia/src/pjmedia/transport_udp.c
index 70f16d6d..688ef240 100644
--- a/pjmedia/src/pjmedia/transport_udp.c
+++ b/pjmedia/src/pjmedia/transport_udp.c
@@ -752,6 +752,8 @@ static void transport_detach( pjmedia_transport *tp,
pj_assert(tp);
if (udp->attached) {
+ int i;
+
/* Lock the ioqueue keys to make sure that callbacks are
* not executed. See ticket #460 for details.
*/
@@ -772,6 +774,13 @@ static void transport_detach( pjmedia_transport *tp,
udp->rtcp_cb = NULL;
udp->user_data = NULL;
+ /* Cancel any outstanding send */
+ for (i=0; i<PJ_ARRAY_SIZE(udp->rtp_pending_write); ++i) {
+ pj_ioqueue_post_completion(udp->rtp_key,
+ &udp->rtp_pending_write[i].op_key, 0);
+ }
+ pj_ioqueue_post_completion(udp->rtcp_key, &udp->rtcp_write_op, 0);
+
/* Unlock keys */
pj_ioqueue_unlock_key(udp->rtcp_key);
pj_ioqueue_unlock_key(udp->rtp_key);