void rdp_free(rdpRdp* rdp) { if (rdp) { crypto_rc4_free(rdp->rc4_decrypt_key); crypto_rc4_free(rdp->rc4_encrypt_key); crypto_des3_free(rdp->fips_encrypt); crypto_des3_free(rdp->fips_decrypt); crypto_hmac_free(rdp->fips_hmac); freerdp_settings_free(rdp->settings); freerdp_settings_free(rdp->settingsCopy); transport_free(rdp->transport); license_free(rdp->license); input_free(rdp->input); update_free(rdp->update); fastpath_free(rdp->fastpath); nego_free(rdp->nego); mcs_free(rdp->mcs); redirection_free(rdp->redirection); autodetect_free(rdp->autodetect); heartbeat_free(rdp->heartbeat); multitransport_free(rdp->multitransport); bulk_free(rdp->bulk); free(rdp); } }
static void bulk_message_reply(struct rcce_binding *b, uint16_t coreid, uint64_t id) { struct rcce_state *st = b->st; errval_t err = bulk_free(&st->bt, id); assert(err_is_ok(err)); assert(st->bulk_waitmsg == true); st->bulk_waitmsg = false; }
static void task_completed_handler(struct replay_binding *b, uint16_t pid, uint64_t bulk_id) { struct task_graph *tg = b->st; struct slave *sl; struct pid_entry *pe; pe = (void *)hash_lookup(tg->pids_h, pid); assert(pe != (void *)HASH_ENTRY_NOTFOUND); sl = pe->sl; tg_complete(tg, pe); bulk_free(&sl->bt, bulk_id); sl->pe = NULL; }
static void slave_push_work(struct slave *sl) { int err; struct bulk_buf *bb; uint64_t bulk_id; //dmsg("pushing work for slave: %ld (%p) pid:%d (completed:%d)\n", sl-slaves, sl, sl->pe->pid, sl->pe->completed); bb = bulk_alloc(&sl->bt); if (bb == NULL) { return; } bulk_buf_copy(bb, sl->pe->tes, sl->pe->tes_size); bulk_id = bulk_prepare_send(bb); err = sl->b->tx_vtbl.new_task(sl->b, NOP_CONT, bulk_id, sl->pe->tes_size); if (err == FLOUNDER_ERR_TX_BUSY) { bulk_free(&sl->bt, bulk_id); return; } assert(err_is_ok(err)); }