+#define logevent(s) do { \
+ logevent(ssh->frontend, s); \
+ if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) { \
+ fprintf(stderr, "%s\n", s); \
+ fflush(stderr); \
+ } \
+} while (0)
+
+/* logevent, only printf-formatted. */
+void logeventf(Ssh ssh, char *fmt, ...)
+{
+ va_list ap;
+ char *buf;
+
+ va_start(ap, fmt);
+ buf = dupvprintf(fmt, ap);
+ va_end(ap);
+ logevent(buf);
+ if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) {
+ fprintf(stderr, "%s\n", buf);
+ fflush(stderr);
+ }
+ sfree(buf);
+}
+
+#define bombout(msg) ( ssh->state = SSH_STATE_CLOSED, \
+ (ssh->s ? sk_close(ssh->s), ssh->s = NULL : 0), \
+ logeventf msg, connection_fatal msg )
+