return err;
}
- collections_hash_table **table;
+ collections_hash_table *table;
switch (type) {
case ClientType_Spawn:
- table = &spawn_table;
+ table = spawn_table;
break;
case ClientType_SpawnWithCaps:
- table = &spawn_with_caps_table;
+ table = spawn_with_caps_table;
break;
case ClientType_Span:
- table = &span_table;
+ table = span_table;
break;
case ClientType_Kill:
- table = &kill_table;
+ table = kill_table;
break;
case ClientType_Exit:
- table = &exit_table;
+ table = exit_table;
break;
case ClientType_Cleanup:
- table = &cleanup_table;
+ table = cleanup_table;
break;
default:
USER_PANIC("Unhandled client type %d\n", type);
}
- void *entry = collections_hash_find(*table, key);
+ assert(table != NULL);
+
+ void *entry = collections_hash_find(table, key);
if (entry == NULL) {
return PROC_MGMT_ERR_CLIENTS_TABLE_FIND;
}
free(cl);
}
- collections_hash_delete(*table, key);
+ collections_hash_delete(table, key);
return SYS_ERR_OK;
}
if (entry->num_spawnds_running == 0) {
entry->status = DOMAIN_STATUS_STOPPED;
-
+
+ err = pending_clients_add(domain_cap, NULL, ClientType_Cleanup,
+ MAX_COREID);
+ if (err_is_fail(err)) {
+ DEBUG_ERR(err, "pending_clients_add in exit_reply_handler");
+ }
+
free(cl);
// TODO(razvan): Same problem applies to the waiters: would