/** * Parse the service description from the service's SCPD URL. Do not call * this from user applications. * * @param service The service in question * @return true if successful; otherwise false */ bool mupnp_controlpoint_parsescservicescpd(mUpnpService *service) { mUpnpNetURL *scpdURL; bool scpdParseSuccess; mupnp_log_debug_l4("Entering...\n"); scpdURL = mupnp_service_getscpdurl(service); if ( NULL == scpdURL ) return false; mupnp_log_debug_s("SCPD URL: %s\n", mupnp_net_url_getrequest(scpdURL)); scpdParseSuccess = mupnp_service_parsedescriptionurl(service, scpdURL); mupnp_net_url_delete(scpdURL); if (scpdParseSuccess == true) return true; #if defined(MUPNP_USE_STDDCP) if (mupnp_service_hasstddcp(service)) { char *stdDCP = mupnp_service_getstddcp(service); scpdParseSuccess = mupnp_service_parsedescription(service, stdDCP, mupnp_strlen(stdDCP)); } #endif mupnp_log_debug_l4("Leaving...\n"); return scpdParseSuccess; }
/** * Destroy an event subscriber * * @param sub The event subscriber */ void mupnp_subscriber_delete(mUpnpSubscriber* sub) { mupnp_log_debug_l4("Entering...\n"); mupnp_subscriber_clear(sub); mupnp_list_remove((mUpnpList*)sub); mupnp_string_delete(sub->sid); mupnp_string_delete(sub->ifAddr); mupnp_net_url_delete(sub->deliveryURL); free(sub); mupnp_log_debug_l4("Leaving...\n"); }
static void mupnp_event_subscription_request_setservice(mUpnpSubscriptionRequest* subReq, mUpnpService* service) { mUpnpNetURL* eventSubURL; mupnp_log_debug_l4("Entering...\n"); eventSubURL = mupnp_service_geteventsuburl(service); mupnp_http_request_seturi(subReq, mupnp_net_url_getrequest(eventSubURL)); mupnp_net_url_delete(subReq->postURL); subReq->postURL = eventSubURL; mupnp_log_debug_l4("Leaving...\n"); }
static mUpnpDevice *mupnp_controlpoint_createdevicefromssdkpacket(mUpnpSSDPPacket *ssdpPkt) { const char *location; mUpnpNetURL *url; mUpnpDevice *dev; bool parseSuccess; mupnp_log_debug_l4("Entering...\n"); location = mupnp_ssdp_packet_getlocation(ssdpPkt); if (mupnp_strlen(location) <= 0) return NULL; dev = mupnp_device_new(); url = mupnp_net_url_new(); mupnp_net_url_set(url, location); parseSuccess = mupnp_device_parsedescriptionurl(dev, url); if (parseSuccess) { mupnp_device_sethttpport(dev, mupnp_net_url_getport(url)); } mupnp_net_url_delete(url); if (parseSuccess == false) { mupnp_device_delete(dev); return NULL; } mupnp_device_setssdppacket(dev, ssdpPkt); #ifndef MUPNP_OPTIMIZED_CP_MODE if (mupnp_controlpoint_parseservicesfordevice(dev, ssdpPkt) == false) { mupnp_device_delete(dev); return NULL; } #endif mupnp_log_debug_l4("Leaving...\n"); return dev; }