static belle_sip_channel_t *tls_create_channel(belle_sip_listening_point_t *lp, const belle_sip_hop_t *hop){ belle_sip_channel_t *chan=belle_sip_channel_new_tls(lp->stack, ((belle_sip_tls_listening_point_t*) lp)->crypto_config ,belle_sip_uri_get_host(lp->listening_uri) ,belle_sip_uri_get_port(lp->listening_uri) ,hop->cname ,hop->host,hop->port); return chan; }
static belle_sip_channel_t *tls_create_channel(belle_sip_listening_point_t *lp, const belle_sip_hop_t *hop){ belle_sip_channel_t *chan=belle_sip_channel_new_tls(BELLE_SIP_TLS_LISTENING_POINT(lp) ,belle_sip_uri_get_host(lp->listening_uri) ,belle_sip_uri_get_port(lp->listening_uri) ,hop->cname ,hop->host,hop->port); return chan; }
int belle_http_provider_send_request(belle_http_provider_t *obj, belle_http_request_t *req, belle_http_request_listener_t *listener){ belle_sip_channel_t *chan; belle_sip_hop_t *hop=belle_sip_hop_new_from_generic_uri(req->orig_uri ? req->orig_uri : req->req_uri); belle_sip_list_t **channels=provider_get_channels(obj,hop->transport); if (listener) belle_http_request_set_listener(req,listener); chan=belle_sip_channel_find_from_list(*channels,obj->ai_family, hop); if (!chan){ if (strcasecmp(hop->transport,"tcp")==0){ chan=belle_sip_stream_channel_new_client(obj->stack,obj->bind_ip,0,hop->cname,hop->host,hop->port); } #ifdef HAVE_POLARSSL else if (strcasecmp(hop->transport,"tls")==0){ chan=belle_sip_channel_new_tls(obj->stack,obj->verify_ctx,obj->bind_ip,0,hop->cname,hop->host,hop->port); } #endif if (!chan){ belle_sip_error("belle_http_provider_send_request(): cannot create channel for [%s:%s:%i]",hop->transport,hop->cname,hop->port); belle_sip_object_unref(hop); return -1; } belle_http_channel_context_new(chan,obj); *channels=belle_sip_list_prepend(*channels,chan); } belle_sip_object_unref(hop); split_request_url(req); fix_request(req); belle_http_request_set_channel(req,chan); if( req->background_task_id != 0){ req->background_task_id = belle_sip_begin_background_task("belle-sip http", belle_http_end_background_task, req); } belle_sip_channel_queue_message(chan,BELLE_SIP_MESSAGE(req)); return 0; }