summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkus@openbsd.org <markus@openbsd.org>2018-07-27 12:03:17 +0000
committerDamien Miller <djm@mindrot.org>2018-07-31 12:20:13 +1000
commit5d14019ba2ff54acbfd20a6b9b96bb860a8c7c31 (patch)
treedfb3f5005c234e3e22c3cd5a2d2dc0adef734691
parente655ee04a3cb7999dbf9641b25192353e2b69418 (diff)
upstream: avoid expensive channel_open_message() calls; ok djm@
-rw-r--r--channels.c10
-rw-r--r--log.c8
-rw-r--r--log.h3
3 files changed, 15 insertions, 6 deletions
diff --git a/channels.c b/channels.c
index 1de63c21..e90f7fea 100644
--- a/channels.c
+++ b/channels.c
@@ -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
@@ -608,9 +608,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);
diff --git a/log.c b/log.c
index 99450dd1..d9c2d136 100644
--- a/log.c
+++ b/log.c
@@ -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
@@ -105,6 +105,12 @@ static struct {
{ NULL, SYSLOG_LEVEL_NOT_SET }
};
+LogLevel
+log_level_get(void)
+{
+ return log_level;
+}
+
SyslogFacility
log_facility_number(char *name)
{
diff --git a/log.h b/log.h
index 78221046..ef7bea7e 100644
--- a/log.h
+++ b/log.h
@@ -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>
@@ -49,6 +49,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 *);