コード例 #1
0
ファイル: controlpoint.c プロジェクト: jink2005/mupnpc
/**
 * 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;
}
コード例 #2
0
ファイル: subscriber.c プロジェクト: Coramo/mupnp
/**
 * 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");
}
コード例 #3
0
ファイル: subscription_request.c プロジェクト: Coramo/mupnp
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");
}
コード例 #4
0
ファイル: controlpoint.c プロジェクト: jink2005/mupnpc
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;
}