Ticket #469 (closed defect: fixed)

Opened 9 years ago

Last modified 9 years ago

Loop forever than UDP media transport is destroyed while callback is running

Reported by: bennylp Owned by: nanang
Priority: normal Milestone: release-0.9.0
Component: pjmedia Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported:

Description

Changeset r773 updated the media transport so that it does not stop listening the socket when it encounters error. Unfortunately this introduced a new problem, that is when the socket is closed/unregistered while the on_rx_rtp() callback is running, the callback will loop indefinitely.

Thanks Phil Torre for reporting this.

Change History

comment:1 Changed 9 years ago by bennylp

  • Status changed from new to closed
  • Resolution set to fixed

Done in r1790. This would also fix ticket #460.

Please note that most of the concurrency protection is done in the ioqueue, see ticket #474 for the details.

comment:2 Changed 9 years ago by bennylp

In r1794 and r1795:

  • bail out from pjmedia UDP transport's on_rx_rtp()/on_rx_rtcp() callback when PJ_ECANCELLED is returned by pj_ioqueue_recvfrom(). This errno is returned by ioqueue, when operation such as pj_ioqueue_recvfrom() is called on key that's already marked as closing.
Note: See TracTickets for help on using tickets.