GF_Err RP_ConnectService(GF_InputService *plug, GF_ClientService *serv, const char *url) { return RP_ConnectServiceEx(plug, serv, url, 0); }
void SDP_NetIO(void *cbk, GF_NETIO_Parameter *param) { GF_Err e; RTPClient *rtp = (RTPClient *)cbk; SDPFetch *sdp = rtp->sdp_temp; gf_service_download_update_stats(rtp->dnload); e = param->error; switch (param->msg_type) { case GF_NETIO_GET_METHOD: if (sdp->original_url) param->name = "POST"; return; case GF_NETIO_GET_CONTENT: if (sdp->original_url) { char szBody[4096], *opt; opt = (char *) gf_modules_get_option((GF_BaseInterface *) gf_service_get_interface(rtp->service), "Network", "MobileIP"); sprintf(szBody, "ipadd\n%s\n\nurl\n%s\n\n", opt, sdp->original_url); param->data = szBody; param->size = (u32) strlen(szBody); } return; case GF_NETIO_DATA_TRANSFERED: if (sdp->original_url) { u32 sdp_size; e = gf_dm_sess_get_stats(rtp->dnload, NULL, NULL, &sdp_size, NULL, NULL, NULL); if (sdp_size) { const char *szFile = gf_dm_sess_get_cache_name(rtp->dnload); if (!szFile) { e = GF_SERVICE_ERROR; } else { e = GF_OK; RP_SDPFromFile(rtp, (char *) szFile, sdp->chan); gf_free(sdp->remote_url); if (sdp->original_url) gf_free(sdp->original_url); gf_free(sdp); rtp->sdp_temp = NULL; return; } } } break; default: if (e == GF_OK) return; } if (sdp->original_url) { char *url = sdp->original_url; gf_free(sdp->remote_url); gf_free(sdp); rtp->sdp_temp = NULL; RP_SendMessage(rtp->service, e, "Error fetching session state - restarting"); RP_ConnectServiceEx(gf_service_get_interface(rtp->service), rtp->service, url, GF_TRUE); gf_free(url); return; } /*error*/ if (sdp->chan) { gf_service_connect_ack(rtp->service, sdp->chan->channel, e); } else { gf_service_connect_ack(rtp->service, NULL, e); rtp->sdp_temp = NULL; } gf_free(sdp->remote_url); if (sdp->original_url) gf_free(sdp->original_url); gf_free(sdp); rtp->sdp_temp = NULL; }