Always show the OpenSSL error queue after failure.

Any failed OpenSSL function may have pushed errors onto the error queue.
Thus, after any failed OpenSSL function it needs to be cleared otherwise
it may leave errors on the queue for future operations.

Signed-off-by: Adam Langley <agl@chromium.org>
(EB: made error_msg_openssl() call do_error_msg())
Signed-off-by: Eric Biggers <ebiggers@google.com>
diff --git a/util.h b/util.h
index b2b18ef..049d770 100644
--- a/util.h
+++ b/util.h
@@ -8,6 +8,7 @@
 #define UTIL_H
 
 #include <inttypes.h>
+#include <stdarg.h>
 #include <stdbool.h>
 #include <stddef.h>
 
@@ -99,6 +100,7 @@
 
 /* ========== Error messages and assertions ========== */
 
+__cold void do_error_msg(const char *format, va_list va, int err);
 __printf(1, 2) __cold void error_msg(const char *format, ...);
 __printf(1, 2) __cold void error_msg_errno(const char *format, ...);
 __printf(1, 2) __cold __noreturn void fatal_error(const char *format, ...);