svn version of branch 1.x broken (fix included)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  Hi all,


  Some of the later changes must have broken the 1.x branch, as it'll  
crash on making a call

--- pjsua_media.h ---

pj_status_t pjsua_media_channel_update(pjsua_call_id call_id,
				       const pjmedia_sdp_session *local_sdp,
				       const pjmedia_sdp_session *remote_sdp)
{
     unsigned i;
     int prev_media_st;
     pjsua_call *call = &pjsua_var.calls[call_id];
     pjmedia_session_info sess_info;
     pjmedia_stream_info *si = NULL;
     pj_status_t status;
     pj_bool_t media_changed = PJ_FALSE;
     int audio_idx;

     if (!pjsua_var.med_endpt) {
	/* We're being shutdown */
	return PJ_EBUSY;
     }

     /* Create media session info based on SDP parameters. */
     status = pjmedia_session_info_from_sdp( call->inv->pool_prov,
					    pjsua_var.med_endpt,
					    PJMEDIA_MAX_SDP_MEDIA, &sess_info,
					    local_sdp, remote_sdp);
     if (status != PJ_SUCCESS)
	return status;

	/* Override ptime, if this option is specified. */
	if (pjsua_var.media_cfg.ptime != 0) {
		si->param->setting.frm_per_pkt = (pj_uint8_t)
			(pjsua_var.media_cfg.ptime / si->param->info.frm_ptime);
		if (si->param->setting.frm_per_pkt == 0)
			si->param->setting.frm_per_pkt = 1;
	}

	/* Disable VAD, if this option is specified. */
	if (pjsua_var.media_cfg.no_vad) {
		si->param->setting.vad = 0;
	}


-----

  As you can see, 'si' is initialized with NULL, and then the fields  
of the structure are modified, which, of course, rises the exception.

  For now I fixed it by moving the code which modifies the 'si'  
structure after the

     /* Find which session is audio */
     PJ_ASSERT_RETURN(call->audio_idx != -1, PJ_EBUG);
     PJ_ASSERT_RETURN(call->audio_idx < (int)sess_info.stream_cnt, PJ_EBUG);
     si = &sess_info.stream_info[call->audio_idx];


  ... which is actually where 'si' is properly initialized.


  Greets


----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.




[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux