Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#1972 closed defect (fixed)

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)

  • 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 (3)

comment:1 Changed 8 years ago by nanang

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

In 5465:

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

comment:2 Changed 8 years 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 8 years 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.