Opened 16 years ago

Closed 16 years ago

Last modified 16 years ago

#469 closed defect (fixed)

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 (2)

comment:1 Changed 16 years ago by bennylp

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

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 16 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.