コード例 #1
0
ファイル: Registrar.cpp プロジェクト: Chocolatbuddha/sems
void CCRegistrar::route(const string& cc_name,
			SBCCallProfile* call_profile, const AmSipRequest* ood_req,
			const AmArg& values, AmArg& res)
{
  DBG("CCRegistrar: route '%s %s'\n", ood_req->method.c_str(), ood_req->r_uri.c_str());
	
	
  if (ood_req->method == "REGISTER"){
    RegisterCacheCtx reg_cache_ctx;

    // reply 200 if possible, else continue
    bool replied = RegisterCache::instance()->saveSingleContact(reg_cache_ctx, *ood_req);

    if(replied) {
      DBG("replied!");
      res.push(AmArg());
      AmArg& res_cmd = res.back();
      res_cmd[SBC_CC_ACTION] = SBC_CC_DROP_ACTION;
    }
  } else {
    if (retarget(ood_req->r_uri, values, call_profile)){  
      return;
    }
    REFUSE_WITH_404;
    return;
  }
}