#2091 closed defect (fixed)
On iOS11, replace_udp_sock() might fail and lead to unusable UDP transport
Reported by: | riza | Owned by: | bennylp |
---|---|---|---|
Priority: | normal | Milestone: | release-2.8 |
Component: | pjlib | Version: | trunk |
Keywords: | Cc: | ||
Backport to 1.x milestone: | Backported: | no |
Description
Ticket #1107 and #1225, described that iOS will reset UDP socket when app goes to background. The library will then try to recreate the socket by calling replace_udp_sock().
However since iOS11, we see some cases that the method fail and lead to unusable UDP transport or even worst, an unresponsive library state.
Log:
ioq_select !Attempting to replace UDP socket 5 ioq_select Error replacing socket: Invalid argument udp0x127d27e00 Warning: pj_ioqueue_recvfrom: [err 120009] Bad file descriptor
Steps to reproduce:
- run ipjsua
- register to a registrar using UDP
- lock-unlock the phone repeatedly
This ticket will retry the recreate socket/replace_udp_sock() if it fail and
add a fallback mechanism (restart transport) from the app callback.
Log:
ioq_select !Attempting to replace UDP socket 5 ioq_select Error get peer name 120022 ioq_select Error set qos param 120022 ioq_select Retry to replace UDP socket 5 ioq_select !Error get peer name 120022 ioq_select UDP has been replaced successfully!
Change History (4)
comment:1 Changed 7 years ago by riza
- Resolution set to fixed
- Status changed from new to closed
comment:2 Changed 7 years ago by ming
In 5769:
comment:3 Changed 7 years ago by ming
In 5778:
comment:4 Changed 6 years ago by ming
In 5849:
Note: See
TracTickets for help on using
tickets.
In 5737: