示例#1
0
void* serviceConnection(void* psa)
{
	int success;
	connection conn;
	http_server srv;
	http_request request;
	http_response response;
	meta_error e = meta_error_new();

	conn = (connection)psa;
	srv =  connection_arg2(conn);
	request = http_server_get_request(srv);
	response = http_server_get_response(srv);

	success = serviceConnection2(srv, conn, request, response, e);
	if(!success && is_tcpip_error(e)) {
		connection_discard(conn);
	}
	else {
		connection_close(conn);
	}

	http_server_recycle_request(srv, request);
	http_server_recycle_response(srv, response);

	meta_error_free(e);
	return (void*)success;
}
示例#2
0
void die_with_error(meta_error e, const char *fmt, ...)
{
    va_list ap;
    int rc;

    va_start(ap, fmt);

    if (is_tcpip_error(e))
        syslog(LOG_ERR, "A tcp/ip error has occured");
    else if (is_protocol_error(e))
        syslog(LOG_ERR, "A protocol error has occured");
    else if (is_app_error(e))
        syslog(LOG_ERR, "A application error has occured");
    else if (is_os_error(e))
        syslog(LOG_ERR, "A os error has occured");
    else if (is_db_error(e))
        syslog(LOG_ERR, "A database error has occured");
    else if (is_other_error(e))
        syslog(LOG_ERR, "An unknown error has occured");

    if (has_error_message(e))
        syslog(LOG_ERR, "Error message: %s", get_error_message(e));
    else if ((rc = get_error_code(e)) != 0)
        syslog(LOG_ERR, "Possible error: %d %s\n", rc, strerror(rc));

    meta_vsyslog(LOG_ERR, fmt, ap);
    va_end(ap);

    exit(EXIT_FAILURE);
}