id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,backport_to_milestone,backported 1875,Fixed assertion in rescheduling PJSIP retransmission,ming,bennylp,"Scenario: 1. REGISTER without authorization is being sent 2. It’s retransmitted once, because response isn’t received yet 3. 401/407 response is received (response to packet in step 1) 4. PJSIP sends REGISTER with Authorization header 5. 401/407 is received again as a response to packet retransmitted in step 2 6. PJSIP tries to send REGISTER with authorization again and it hit an assertion: {{{ pj_assert((tsx->transport_flag & TSX_HAS_PENDING_TRANSPORT) == 0); }}} stack trace: {{{ #4 0x002deea6 in __assert_fail () from /lib/libc.so.6 #5 0x082cc658 in tsx_resched_retransmission (tsx=0xeb94446c) at ../src/pjsip/sip_transaction.c:2219 #6 0x082cbc32 in send_msg_callback (send_state=0xe3bad828, sent=767, cont=0xf4bfdfcc) at ../src/pjsip/sip_transaction.c:1857 #7 0x082ba2fe in stateless_send_transport_cb (token=0xe3bad828, tdata=0xe3a0f2d4, sent=767) at ../src/pjsip/sip_util.c:1126 #8 0x082bdee2 in transport_send_callback (transport=0x8bcf6e4, token=0xe3a0f2d4, size=767) at ../src/pjsip/sip_transport.c:757 #9 0x082c09d9 in udp_on_write_complete (key=0x8bd7c50, op_key=0xe3a0f310, bytes_sent=767) at ../src/pjsip/sip_transport_udp.c:306 #10 0x082e33a8 in ioqueue_dispatch_write_event (ioqueue=0x8bd79a0, h=0x8bd7c50) at ../src/pj/ioqueue_common_abs.c:399 }}} The assertion is caused because in sip_transaction.c, if there is pending send and reschedule, the pending send may cause the flag TSX_HAS_PENDING_TRANSPORT to be set when sending the pending message (in {{{tsx_send_msg()}}}). ",defect,closed,normal,release-2.4.5,pjsip,trunk,fixed,,,,0