-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/4017/#review13420
-----------------------------------------------------------



/branches/13/channels/chan_pjsip.c
<https://reviewboard.asterisk.org/r/4017/#comment23943>

    Why is goto being used here?  This should be simply:
    if not caps empty {
      set formats
    }


- rmudgett


On Sept. 23, 2014, 11:32 a.m., Jonathan Rose wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/4017/
> -----------------------------------------------------------
> 
> (Updated Sept. 23, 2014, 11:32 a.m.)
> 
> 
> Review request for Asterisk Developers, Joshua Colp and Mark Michelson.
> 
> 
> Bugs: ASTERISK-24222
>     https://issues.asterisk.org/jira/browse/ASTERISK-24222
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> This is the test scenario:
> 
> A has disallow=all and no allow lines
> B has disallow=all, allow=ulaw
> 
> A dials an extension that 
> 
> Prior to Asterisk 13, calls like this would actually start dialing and the 
> call would only hangup after answering. In 13, some major formats rework went 
> in and this has led to some differences from that behavior. Namely the 
> asserts mentioned in the issue, but another issue that this patch doesn't 
> address is that in Asterisk 13, no outbound dial occurs in this case 
> either... that might actually be a good thing.
> 
> 
> Diffs
> -----
> 
>   /branches/13/channels/chan_pjsip.c 423661 
> 
> Diff: https://reviewboard.asterisk.org/r/4017/diff/
> 
> 
> Testing
> -------
> 
> Dialed from A to B in the above scenario in 12, 13 (unpatched) and 13 with 
> the patch. Made sure the channels involved were hung up properly and that no 
> asserts occurred when the patch was in place.
> 
> 
> Example output in Asterisk 12:
> *CLI> [Sep 22 15:59:50] WARNING[9969]: channel.c:834 ast_best_codec: Don't 
> know any of (nothing) formats
>     -- Executing [1603@default:1] Dial("PJSIP/1601-00000004", "PJSIP/1603") 
> in new stack
>     -- Called PJSIP/1603
>     -- PJSIP/1603-00000005 is ringing
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
>     -- PJSIP/1603-00000005 answered PJSIP/1601-00000004
>     -- Channel PJSIP/1603-00000005 joined 'simple_bridge' basic-bridge 
> <cca32573-8057-4791-8261-b0270821b33f>
>     -- Channel PJSIP/1601-00000004 joined 'simple_bridge' basic-bridge 
> <cca32573-8057-4791-8261-b0270821b33f>
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: bridge.c:957 
> bridge_make_compatible: Failed to set channel PJSIP/1601-00000004 to read 
> format ulaw
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
> [Sep 22 15:59:52] WARNING[9969]: res_pjsip_sdp_rtp.c:234 set_caps: No joint 
> capabilities between our configuration((nothing)) and incoming 
> SDP((ulaw|alaw|g726|g729|g722|slin16|silk8))
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5128 ast_write: Codec 
> mismatch on channel PJSIP/1601-00000004 setting write format to ulaw from 
> unknown native formats (nothing)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: channel.c:5365 set_format: 
> Unable to find a codec translation path from (nothing) to (ulaw)
> [Sep 22 15:59:52] WARNING[10087][C-00000003]: chan_pjsip.c:639 
> chan_pjsip_write: Asked to transmit frame type ulaw, while native formats is 
> (nothing) (read/write = unknown/unknown)
>     -- Channel PJSIP/1601-00000004 left 'simple_bridge' basic-bridge 
> <cca32573-8057-4791-8261-b0270821b33f>
>     -- Channel PJSIP/1603-00000005 left 'simple_bridge' basic-bridge 
> <cca32573-8057-4791-8261-b0270821b33f>
>   == Spawn extension (default, 1603, 1) exited non-zero on 
> 'PJSIP/1601-00000004'
>     -- Executing [h@default:1] NoOp("PJSIP/1601-00000004", "AGI Exit Status: 
> ") in new stack
> 
> 
> Example output in Asterisk 13 (unpatched):
> *CLI> FRACK!, Failed assertion position < 
> AST_VECTOR_SIZE(&cap->preference_order) (0) at line 380 in 
> ast_format_cap_get_format of format_cap.c
> [Sep 22 16:00:58] ERROR[11026]: format_cap.c:380 ast_format_cap_get_format: 
> FRACK!, Failed assertion position < AST_VECTOR_SIZE(&cap->preference_order) 
> (0)
> Got 18 backtrace records
> #0: [0x61fc3b] main/utils.c:2649 __ast_assert_failed() (0x61fbbc+7F)
> #1: [0x531924] main/format_cap.c:382 ast_format_cap_get_format() (0x5318b1+73)
> #2: [0x7f10feecc443] channels/chan_pjsip.c:425 chan_pjsip_new()
> #3: [0x7f10feed0ac8] channels/chan_pjsip.c:2021 chan_pjsip_incoming_request()
> #4: [0x7f1148657ca7] res/res_pjsip_session.c:1797 handle_incoming_request()
> #5: [0x7f1148656deb] res/res_pjsip_session.c:1580 new_invite()
> #6: [0x606d04] main/taskprocessor.c:768 ast_taskprocessor_execute() 
> (0x606c04+100)
> #7: [0x60f7bc] main/threadpool.c:1152 execute_tasks()
> #8: [0x606d04] main/taskprocessor.c:768 ast_taskprocessor_execute() 
> (0x606c04+100)
> #9: [0x60dfec] main/threadpool.c:351 threadpool_execute()
> #10: [0x60f4a2] main/threadpool.c:1072 worker_active()
> #11: [0x60f25e] main/threadpool.c:993 worker_start()
> FRACK!, Failed assertion 0 (0) at line 409 in internal_ao2_ref of astobj2.c
> #12: [0x61b9a5] main/utils.c:1201 dummy_start()
> [Sep 22 16:00:59] ERROR[11026]: astobj2.c:116 INTERNAL_OBJ: user_data is NULL
> [Sep 22 16:00:59] ERROR[11026]: astobj2.c:409 internal_ao2_ref: FRACK!, 
> Failed assertion 0 (0)
> Got 19 backtrace records
> #0: [0x61fc3b] main/utils.c:2649 __ast_assert_failed() (0x61fbbc+7F)
> #1: [0x45f366] main/astobj2.c:410 internal_ao2_ref()
> #2: [0x45f78f] main/astobj2.c:514 __ao2_ref() (0x45f761+2E)
> #3: [0x7f10feecc4c2] channels/chan_pjsip.c:431 chan_pjsip_new()
> #4: [0x7f10feed0ac8] channels/chan_pjsip.c:2021 chan_pjsip_incoming_request()
> #5: [0x7f1148657ca7] res/res_pjsip_session.c:1797 handle_incoming_request()
> #6: [0x7f1148656deb] res/res_pjsip_session.c:1580 new_invite()
> #7: [0x606d04] main/taskprocessor.c:768 ast_taskprocessor_execute() 
> (0x606c04+100)
> #8: [0x60f7bc] main/threadpool.c:1152 execute_tasks()
> #9: [0x606d04] main/taskprocessor.c:768 ast_taskprocessor_execute() 
> (0x606c04+100)
> #10: [0x60dfec] main/threadpool.c:351 threadpool_execute()
> #11: [0x60f4a2] main/threadpool.c:1072 worker_active()
> #12: [0x60f25e] main/threadpool.c:993 worker_start()
> #13: [0x61b9a5] main/utils.c:1201 dummy_start()
>     -- Executing [1603@default:1] Dial("PJSIP/1601-00000000", "PJSIP/1603") 
> in new stack
> [Sep 22 16:00:59] ERROR[11112][C-00000000]: translate.c:1280 
> ast_translator_best_choice: Cannot determine best translation path since one 
> capability supports no formats
> failed to extend from 64 to 98
> [Sep 22 16:00:59] WARNING[11112][C-00000000]: channel.c:5888 ast_request: No 
> translator path exists for channel type PJSIP (native 
> (g723|ulaw|alaw|gsm|g726|g726aal2|adpcm|slin|slin|slin|slin|)) to (nothing)
> [Sep 22 16:00:59] WARNING[11112][C-00000000]: app_dial.c:2431 dial_exec_full: 
> Unable to create channel of type 'PJSIP' (cause 58 - Bearer capability not 
> available)
>   == Everyone is busy/congested at this time (1:0/0/1)
>     -- Auto fallthrough, channel 'PJSIP/1601-00000000' status is 'CHANUNAVAIL'
>     -- Executing [h@default:1] NoOp("PJSIP/1601-00000000", "AGI Exit Status: 
> ") in new stack
> [Sep 22 16:01:05] WARNING[11026]: res_pjsip_mwi.c:679 mwi_new_subscribe: AOR 
> 1601 has no configured mailboxes. MWI subscription failed
> 
> 
> And for comparison sake... the output in 13 with the patch applied:
> *CLI>     -- Executing [1603@default:1] Dial("PJSIP/1601-00000000", 
> "PJSIP/1603") in new stack
> [Sep 22 16:01:59] ERROR[12441][C-00000000]: translate.c:1280 
> ast_translator_best_choice: Cannot determine best translation path since one 
> capability supports no formats
> failed to extend from 64 to 98
> [Sep 22 16:01:59] WARNING[12441][C-00000000]: channel.c:5888 ast_request: No 
> translator path exists for channel type PJSIP (native 
> (g723|ulaw|alaw|gsm|g726|g726aal2|adpcm|slin|slin|slin|slin|)) to (nothing)
> [Sep 22 16:01:59] WARNING[12441][C-00000000]: app_dial.c:2431 dial_exec_full: 
> Unable to create channel of type 'PJSIP' (cause 58 - Bearer capability not 
> available)
>   == Everyone is busy/congested at this time (1:0/0/1)
>     -- Auto fallthrough, channel 'PJSIP/1601-00000000' status is 'CHANUNAVAIL'
>     -- Executing [h@default:1] NoOp("PJSIP/1601-00000000", "AGI Exit Status: 
> ") in new stack
> 
> Oooh, now isn't that clean.
> 
> 
> Thanks,
> 
> Jonathan Rose
> 
>

-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to