return early when nothing would be logged
This returns early in case 1. no log handler is set 2. the default log handler is set and the log level would result in nothing being printed. No need to snprintf() and whatnot if there's no consumer. Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
This commit is contained in:
10
src/ctx.c
10
src/ctx.c
@@ -265,6 +265,13 @@ void xmpp_log(const xmpp_ctx_t *ctx,
|
||||
char *buf;
|
||||
va_list copy;
|
||||
|
||||
if (!ctx->log->handler)
|
||||
return;
|
||||
|
||||
if (ctx->log->handler == xmpp_default_logger &&
|
||||
level < *(xmpp_log_level_t *)ctx->log->userdata)
|
||||
return;
|
||||
|
||||
va_copy(copy, ap);
|
||||
ret = xmpp_vsnprintf(smbuf, sizeof(smbuf), fmt, ap);
|
||||
if (ret >= (int)sizeof(smbuf)) {
|
||||
@@ -288,8 +295,7 @@ void xmpp_log(const xmpp_ctx_t *ctx,
|
||||
}
|
||||
va_end(copy);
|
||||
|
||||
if (ctx->log->handler)
|
||||
ctx->log->handler(ctx->log->userdata, level, area, buf);
|
||||
ctx->log->handler(ctx->log->userdata, level, area, buf);
|
||||
|
||||
if (buf != smbuf)
|
||||
xmpp_free(ctx, buf);
|
||||
|
||||
Reference in New Issue
Block a user