Ticket #1972 (closed defect: fixed)

Opened 7 months ago

Last modified 7 months ago

ICE initialization issues when creating a component/candidate fails.

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

Description (last modified by ming) (diff)

  • ICE initialization hangs when using DNS SRV and unresolvable TURN server.

When making call with IPv6, ICE/TURN, and DNS SRV enabled, the media initialization seems to get stuck and no INVITE message is not generated/sent.

After investigation it turns out that ICE transport does not update TURN candidate status from PJ_EPENDING when the asynchronous TURN server name resolution fails, so that ICE initialization never reaches state PJ_ICE_STRANS_STATE_READY and callback on_ice_complete() never gets invoked.

  • Assertions when trying to access other components/candidates.

Failure in the process of creating a component/candidate, such as connection failure to a TURN server, could also lead to other problems, such as assertions when trying to access other components/candidates, which have not been initialized yet.

  • Crash when accessing the failed component.

Failure in creating a TURN candidate would result in crash when trying to access the already-destroyed TURN socket.

Thanks to Bing Huan, Chio for the report.

Change History

comment:1 Changed 7 months ago by nanang

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

In 5465:

Fix #1972: Update ICE candidate status to non-PJ_EPENDING after TURN server name resolution fails.

comment:2 Changed 7 months ago by ming

  • Description modified (diff)
  • Summary changed from ICE initialization hangs when using DNS SRV and unresolvable TURN server to ICE initialization issues when creating a component/candidate fails.

comment:3 Changed 7 months ago by ming

In 5474:

Re #1972: ICE initialization issues when creating a component/candidate fails.

Fixed ICE stuck if TURN creation fails in resolved state, assertions when trying to access other components/candidates, and crash when trying to access destroyed TURN socket.

Note: See TracTickets for help on using tickets.