static void free_server(struct server *server) { cork_dllist_remove(&server->entries); if (server->chunk != NULL) { if (server->chunk->buf != NULL) { free(server->chunk->buf); } free(server->chunk); server->chunk = NULL; } if (server->remote != NULL) { server->remote->server = NULL; } if (server->e_ctx != NULL) { cipher_context_release(&server->e_ctx->evp); free(server->e_ctx); } if (server->d_ctx != NULL) { cipher_context_release(&server->d_ctx->evp); free(server->d_ctx); } if (server->buf != NULL) { free(server->buf); } free(server->recv_ctx); free(server->send_ctx); free(server); }
static void free_server(server_t *server) { cork_dllist_remove(&server->entries); if (server->remote != NULL) { server->remote->server = NULL; } if (server->e_ctx != NULL) { cipher_context_release(&server->e_ctx->evp); free(server->e_ctx); } if (server->d_ctx != NULL) { cipher_context_release(&server->d_ctx->evp); free(server->d_ctx); } if (server->buf != NULL) { bfree(server->buf); free(server->buf); } // SSR beg if (server->obfs_plugin) { server->obfs_plugin->dispose(server->obfs); server->obfs = NULL; free_obfs_class(server->obfs_plugin); server->obfs_plugin = NULL; } if (server->protocol_plugin) { server->protocol_plugin->dispose(server->protocol); server->protocol = NULL; free_obfs_class(server->protocol_plugin); server->protocol_plugin = NULL; } // SSR end free(server->recv_ctx); free(server->send_ctx); free(server); }