static void client_delete(struct watchman_client *client) { struct watchman_client_response *resp; w_log(W_LOG_DBG, "client_delete %p\n", client); derived_client_dtor(client); while (client->head) { resp = client->head; client->head = resp->next; json_decref(resp->json); free(resp); } w_json_buffer_free(&client->reader); w_json_buffer_free(&client->writer); w_event_destroy(client->ping); w_stm_shutdown(client->stm); w_stm_close(client->stm); free(client); }
static void client_delete(w_ht_val_t val) { struct watchman_client *client = w_ht_val_ptr(val); struct watchman_client_response *resp; w_log(W_LOG_DBG, "client_delete %p\n", client); /* cancel subscriptions */ w_ht_free(client->subscriptions); while (client->head) { resp = client->head; client->head = resp->next; json_decref(resp->json); free(resp); } w_json_buffer_free(&client->reader); w_json_buffer_free(&client->writer); w_event_destroy(client->ping); w_stm_close(client->stm); free(client); }