Пример #1
0
/** Set UAS flag value. 
 * 
 * The function nta_agent_set_uas() is used to set or clear User Agent
 * Server flag.  
 *
 * Currently, the flag determines how the agent handles 2XX replies to an
 * incoming INVITE request.  If flag is set, the agent resends the 2XX final
 * responses to an INVITE.
 *
 * @deprecated Use nta_agent_set_params() and NTATAG_UA() instead.
 */
int nta_agent_set_uas(nta_agent_t *agent, int value)
{
  int retval = 1;

  nta_agent_set_params(agent, NTATAG_UA(value != 0), TAG_END());
  nta_agent_get_params(agent, NTATAG_UA_REF(retval), TAG_END());

  return retval;
}
Пример #2
0
/** Set branch key.
 *
 * @deprecated Use nta_agent_set_params() and NTATAG_BRANCH_KEY() instead.
 */
msg_param_t nta_agent_set_branch(nta_agent_t *agent, 
				 msg_param_t branch)
{
  msg_param_t retval = "";

  nta_agent_set_params(agent, NTATAG_BRANCH_KEY(branch), TAG_END());
  nta_agent_get_params(agent, NTATAG_BRANCH_KEY_REF(retval), TAG_END());

  return retval;
}
Пример #3
0
/** Set default proxy. 
 *
 * @deprecated Use nta_agent_set_params() and NTATAG_DEFAULT_PROXY() instead.
 */
int nta_agent_set_proxy(nta_agent_t *agent, url_string_t const *u)
{
  if (agent)
    nta_agent_set_params(agent, NTATAG_DEFAULT_PROXY(u), TAG_END());
  return 0;
}
Пример #4
0
int nua_stack_init(su_root_t *root, nua_t *nua)
{
  su_home_t *home;
  nua_handle_t *dnh;

  static int initialized_logs = 0;

  enter;

  if (!initialized_logs) {
    extern su_log_t tport_log[];
    extern su_log_t nta_log[];
    extern su_log_t nea_log[];
    extern su_log_t iptsec_log[];

    su_log_init(tport_log);
    su_log_init(nta_log);
    su_log_init(nea_log);
    su_log_init(iptsec_log);

    initialized_logs = 1;
  }

  nua->nua_root = root;

  home = nua->nua_home;
  nua->nua_handles_tail = &nua->nua_handles;
  sip_from_init(nua->nua_from);

  dnh = su_home_clone(nua->nua_home, sizeof (*dnh) + sizeof(*dnh->nh_prefs));
  if (!dnh)
    return -1;

  dnh->nh_prefs = (void *)(dnh + 1);
  dnh->nh_valid = nua_valid_handle_cookie;
  dnh->nh_nua = nua;
  nua_handle_ref(dnh); dnh->nh_ref_by_stack = 1;
  nua_handle_ref(dnh); dnh->nh_ref_by_user = 1;
  nh_append(nua, dnh);
  dnh->nh_identity = dnh;
  dnh->nh_ds->ds_local = nua->nua_from;
  dnh->nh_ds->ds_remote = nua->nua_from;

  if (nua_stack_set_defaults(dnh, dnh->nh_prefs) < 0)
    return -1;

  if (nua_stack_set_params(nua, dnh, nua_i_none, nua->nua_args) < 0)
    return -1;

  /* XXX - soa should know what it supports */
  nua->nua_invite_accept = sip_accept_make(home, SDP_MIME_TYPE);

  nua->nua_accept_multipart = sip_accept_format(home, "%s, %s",
						SDP_MIME_TYPE,
						"multipart/*");

  nua->nua_nta = nta_agent_create(root, NONE, NULL, NULL,
				  NTATAG_MERGE_482(1),
				  NTATAG_CLIENT_RPORT(1),
				  NTATAG_UA(1),
#if HAVE_SOFIA_SMIME
				  NTATAG_SMIME(nua->sm),
#endif
				  TPTAG_STUN_SERVER(1),
				  TAG_NEXT(nua->nua_args));

  dnh->nh_ds->ds_leg = nta_leg_tcreate(nua->nua_nta,
				       nua_stack_process_request, dnh,
				       NTATAG_NO_DIALOG(1),
				       TAG_END());

  if (nua->nua_nta == NULL ||
      dnh->nh_ds->ds_leg == NULL ||
      nta_agent_set_params(nua->nua_nta, NTATAG_UA(1), TAG_END()) < 0 ||
      nua_stack_init_transport(nua, nua->nua_args) < 0) {
    SU_DEBUG_1(("nua: initializing SIP stack failed\n"));
    return -1;
  }

  if (nua_stack_set_from(nua, 1, nua->nua_args) < 0)
    return -1;

  if (nua->nua_prefs->ngp_detect_network_updates)
    nua_stack_launch_network_change_detector(nua);

  return 0;
}