Exemple #1
0
static void established_free_cb(uv_handle_t* handle)
{
	server_ctx *ctx = (server_ctx *)handle->data;
	if (!ctx->encoder.encrypt_table)
		destroy_encryptor(&ctx->encoder);
	free(ctx);
}
Exemple #2
0
// Failed during handshake
static void handshake_client_close_cb(uv_handle_t* handle)
{
	server_ctx *ctx = (server_ctx *)handle->data;
	if (ctx->handshake_buffer) {
		free(ctx->handshake_buffer);
		ctx->handshake_buffer = NULL;
	}
	if (!ctx->encoder.encrypt_table)
		destroy_encryptor(&ctx->encoder);
	free(ctx);
}
Exemple #3
0
static void clean_exit(int err, const char *msg, int fds_num, ...)
{
    if (err != 0) {
        fprintf(stderr, "ERROR: %s: %s\n", msg, strerror(err));
    }
    else {
        fprintf(stdout, "INFO: %s\n", msg);
    }
    
    va_list arg_ptr;
    va_start(arg_ptr, fds_num);
    while (fds_num > 0) {
        close(va_arg(arg_ptr, int));
    }
    va_end(arg_ptr);

    destroy_encryptor(&crypto);
    destroy_encryptor(&chd_crypto);

    if (err != 0) {
        exit(EXIT_FAILURE);      
    }
    exit(EXIT_SUCCESS);
}