nsresult NrIceCtx::StartGathering(bool default_route_only, bool proxy_only) { ASSERT_ON_THREAD(sts_target_); SetGatheringState(ICE_CTX_GATHER_STARTED); if (default_route_only) { nr_ice_ctx_add_flags(ctx_, NR_ICE_CTX_FLAGS_ONLY_DEFAULT_ADDRS); } else { nr_ice_ctx_remove_flags(ctx_, NR_ICE_CTX_FLAGS_ONLY_DEFAULT_ADDRS); } if (proxy_only) { nr_ice_ctx_add_flags(ctx_, NR_ICE_CTX_FLAGS_ONLY_PROXY); } else { nr_ice_ctx_remove_flags(ctx_, NR_ICE_CTX_FLAGS_ONLY_PROXY); } // This might start gathering for the first time, or again after // renegotiation, or might do nothing at all if gathering has already // finished. int r = nr_ice_gather(ctx_, &NrIceCtx::gather_cb, this); if (!r) { SetGatheringState(ICE_CTX_GATHER_COMPLETE); } else if (r != R_WOULDBLOCK) { MOZ_MTLOG(ML_ERROR, "Couldn't gather ICE candidates for '" << name_ << "', error=" << r); SetConnectionState(ICE_CTX_FAILED); return NS_ERROR_FAILURE; } return NS_OK; }
nsresult NrIceCtx::StartGathering() { ASSERT_ON_THREAD(sts_target_); SetGatheringState(ICE_CTX_GATHER_STARTED); // This might start gathering for the first time, or again after // renegotiation, or might do nothing at all if gathering has already // finished. int r = nr_ice_gather(ctx_, &NrIceCtx::gather_cb, this); if (!r) { SetGatheringState(ICE_CTX_GATHER_COMPLETE); } else if (r != R_WOULDBLOCK) { MOZ_MTLOG(ML_ERROR, "Couldn't gather ICE candidates for '" << name_ << "', error=" << r); SetConnectionState(ICE_CTX_FAILED); return NS_ERROR_FAILURE; } return NS_OK; }
nsresult NrIceCtx::StartGathering() { MOZ_ASSERT(ctx_->state == ICE_CTX_INIT); if (ctx_->state != ICE_CTX_INIT) { MOZ_MTLOG(ML_ERROR, "ICE ctx in the wrong state for gathering: '" << name_ << "'"); SetConnectionState(ICE_CTX_FAILED); return NS_ERROR_FAILURE; } int r = nr_ice_initialize(ctx_, &NrIceCtx::initialized_cb, this); if (r && r != R_WOULDBLOCK) { MOZ_MTLOG(ML_ERROR, "Couldn't gather ICE candidates for '" << name_ << "'"); SetConnectionState(ICE_CTX_FAILED); return NS_ERROR_FAILURE; } SetGatheringState(ICE_CTX_GATHER_STARTED); return NS_OK; }