avoid expensive channel_open_message() calls; ok djm@
authormarkus <markus@openbsd.org>
Fri, 27 Jul 2018 12:03:17 +0000 (12:03 +0000)
committermarkus <markus@openbsd.org>
Fri, 27 Jul 2018 12:03:17 +0000 (12:03 +0000)
usr.bin/ssh/channels.c
usr.bin/ssh/log.c
usr.bin/ssh/log.h

index 4b22e17..9482e9e 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.c,v 1.383 2018/07/11 18:53:29 markus Exp $ */
+/* $OpenBSD: channels.c,v 1.384 2018/07/27 12:03:17 markus Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -598,9 +598,11 @@ channel_free(struct ssh *ssh, Channel *c)
        if (c->type == SSH_CHANNEL_MUX_CLIENT)
                mux_remove_remote_forwardings(ssh, c);
 
-       s = channel_open_message(ssh);
-       debug3("channel %d: status: %s", c->self, s);
-       free(s);
+       if (log_level_get() >= SYSLOG_LEVEL_DEBUG3) {
+               s = channel_open_message(ssh);
+               debug3("channel %d: status: %s", c->self, s);
+               free(s);
+       }
 
        channel_close_fds(ssh, c);
        sshbuf_free(c->input);
index 36a4659..8456bd7 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: log.c,v 1.50 2017/05/17 01:24:17 djm Exp $ */
+/* $OpenBSD: log.c,v 1.51 2018/07/27 12:03:17 markus Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -95,6 +95,12 @@ static struct {
        { NULL,         SYSLOG_LEVEL_NOT_SET }
 };
 
+LogLevel
+log_level_get(void)
+{
+       return log_level;
+}
+
 SyslogFacility
 log_facility_number(char *name)
 {
index 7d74927..99031b6 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: log.h,v 1.22 2017/05/17 01:24:17 djm Exp $ */
+/* $OpenBSD: log.h,v 1.23 2018/07/27 12:03:17 markus Exp $ */
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -46,6 +46,7 @@ typedef enum {
 typedef void (log_handler_fn)(LogLevel, const char *, void *);
 
 void     log_init(char *, LogLevel, SyslogFacility, int);
+LogLevel log_level_get(void);
 int      log_change_level(LogLevel);
 int      log_is_on_stderr(void);
 void     log_redirect_stderr_to(const char *);