static void mupnp_ssdpresponse_server_thread(mUpnpThread* thread) { mUpnpSSDPResponseServer* server; mUpnpSSDPPacket* ssdpPkt; void* userData; mupnp_log_debug_l4("Entering...\n"); server = (mUpnpSSDPResponseServer*)mupnp_thread_getuserdata(thread); userData = mupnp_ssdpresponse_server_getuserdata(server); if (mupnp_ssdpresponse_server_isopened(server) == false) return; ssdpPkt = mupnp_ssdp_packet_new(); mupnp_ssdp_packet_setuserdata(ssdpPkt, userData); while (mupnp_thread_isrunnable(thread) == true) { if (mupnp_httpu_socket_recv(server->httpuSock, ssdpPkt) <= 0) break; mupnp_ssdp_packet_print(ssdpPkt); mupnp_ssdpresponse_server_performlistener(server, ssdpPkt); mupnp_ssdp_packet_clear(ssdpPkt); } mupnp_ssdp_packet_delete(ssdpPkt); mupnp_log_debug_l4("Leaving...\n"); }
mUpnpSSDPPacket *mupnp_ssdp_packet_new() { mUpnpSSDPPacket *ssdpPkt; mupnp_log_debug_l4("Entering...\n"); ssdpPkt = (mUpnpSSDPPacket *)malloc(sizeof(mUpnpSSDPPacket)); if ( NULL != ssdpPkt ) { ssdpPkt->dgmPkt = mupnp_socket_datagram_packet_new(); ssdpPkt->headerList = mupnp_http_headerlist_new(); ssdpPkt->initialized = 0; mupnp_ssdp_packet_setuserdata(ssdpPkt, NULL); mupnp_ssdp_packet_settimestamp(ssdpPkt, mupnp_getcurrentsystemtime()); ssdpPkt->timestamps = (mUpnpTime *)malloc(MUPNP_SSDP_FILTER_TABLE_SIZE * sizeof(mUpnpTime)); } return ssdpPkt; mupnp_log_debug_l4("Leaving...\n"); }