void networkinterface_free(NetworkInterface* interface) { MAGIC_ASSERT(interface); /* unref all packets sitting in our input buffer */ while(interface->inBuffer && !g_queue_is_empty(interface->inBuffer)) { Packet* packet = g_queue_pop_head(interface->inBuffer); packet_unref(packet); } g_queue_free(interface->inBuffer); /* unref all sockets wanting to send */ while(interface->rrQueue && !g_queue_is_empty(interface->rrQueue)) { Socket* socket = g_queue_pop_head(interface->rrQueue); descriptor_unref(socket); } g_queue_free(interface->rrQueue); priorityqueue_free(interface->fifoQueue); g_hash_table_destroy(interface->boundSockets); dns_deregister(worker_getDNS(), interface->address); address_unref(interface->address); if(interface->pcapFile) { fclose(interface->pcapFile); } MAGIC_CLEAR(interface); g_free(interface); }
static void _hoststealqueuedata_free(HostStealQueueData* qdata) { if(qdata) { if(qdata->pq) { priorityqueue_free(qdata->pq); } g_mutex_clear(&(qdata->lock)); g_free(qdata); } }
void asyncpriorityqueue_free(AsyncPriorityQueue *q) { g_assert(q); g_mutex_lock(&(q->lock)); priorityqueue_free(q->pq); q->pq = NULL; g_mutex_unlock(&(q->lock)); g_mutex_clear(&(q->lock)); g_free(q); }