コード例 #1
0
ファイル: transport.c プロジェクト: Graf3x/FreeRDP
static void transport_bio_error_log(LPCSTR tag, LPCSTR biofunc, BIO* bio,
	LPCSTR file, LPCSTR func, DWORD line)
{
	unsigned long sslerr;
	char *buf;
	wLog* log;
	wLogMessage log_message;
	int saveerrno;

	saveerrno = errno;

	log = WLog_Get(tag);
	if (!log)
		return;

	log_message.Level = WLOG_ERROR;
	if (log_message.Level < WLog_GetLogLevel(log))
		return;

	log_message.Type = WLOG_MESSAGE_TEXT;
	log_message.LineNumber = line;
	log_message.FileName = file;
	log_message.FunctionName = func;

	if (ERR_peek_error() == 0)
	{
		log_message.FormatString = "%s returned a system error %d: %s";
		WLog_PrintMessage(log, &log_message, biofunc, saveerrno, strerror(saveerrno));
		return;
	}

	buf = malloc(120);
	if (buf)
	{
		while((sslerr = ERR_get_error()))
		{
			ERR_error_string_n(sslerr, buf, 120);
			log_message.FormatString = "%s returned an error: %s";
			WLog_PrintMessage(log, &log_message, biofunc, buf);
		}
		free(buf);
	}
}
コード例 #2
0
ファイル: transport.c プロジェクト: ilammy/FreeRDP
static void transport_bio_error_log(rdpTransport* transport, LPCSTR biofunc, BIO* bio,
                                    LPCSTR file, LPCSTR func, DWORD line)
{
	unsigned long sslerr;
	char* buf;
	int saveerrno;
	DWORD level;
	saveerrno = errno;
	level = WLOG_ERROR;

	if (level < WLog_GetLogLevel(transport->log))
		return;

	if (ERR_peek_error() == 0)
	{
		const char* fmt = "%s returned a system error %d: %s";
		WLog_PrintMessage(transport->log, WLOG_MESSAGE_TEXT, level, line, file, func, fmt, biofunc,
		                  saveerrno, strerror(saveerrno));
		return;
	}

	buf = malloc(120);

	if (buf)
	{
		const char* fmt = "%s returned an error: %s";

		while ((sslerr = ERR_get_error()))
		{
			ERR_error_string_n(sslerr, buf, 120);
			WLog_PrintMessage(transport->log, WLOG_MESSAGE_TEXT, level, line, file, func, fmt, biofunc,
			                  buf);
		}

		free(buf);
	}
}