// Client release from AFU static void _free(struct psl *psl, struct client *client) { struct cmd_event *mem_access; // DEBUG debug_context_remove(psl->dbg_fp, psl->dbg_id, client->context); info_msg("%s client disconnect from %s context %d", client->ip, psl->name, client->context); close_socket(&(client->fd)); if (client->ip) free(client->ip); client->ip = NULL; mem_access = (struct cmd_event *)client->mem_access; if (mem_access != NULL) { if (mem_access->state != MEM_DONE) { mem_access->resp = PSL_RESPONSE_FAILED; mem_access->state = MEM_DONE; } } client->mem_access = NULL; client->mmio_access = NULL; if (client->job) client->job->state = PSLSE_DONE; client->state = CLIENT_NONE; }
// Client release from AFU static void _free(struct psl *psl, struct client *client) { struct cmd_event *mem_access; // DEBUG debug_context_remove(psl->dbg_fp, psl->dbg_id, client->context); info_msg("%s client disconnect from %s context %d", client->ip, psl->name, client->context); close_socket(&(client->fd)); if (client->ip) free(client->ip); client->ip = NULL; mem_access = (struct cmd_event *)client->mem_access; if (mem_access != NULL) { if (mem_access->state != MEM_DONE) { mem_access->resp = PSL_RESPONSE_FAILED; mem_access->state = MEM_DONE; } } client->mem_access = NULL; client->mmio_access = NULL; client->state = CLIENT_NONE; psl->attached_clients--; info_msg( "Detatched a client: current attached clients = %d\n", psl->attached_clients ); // where do we *really* free the client struct and it's contents??? }