]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
polarssl: optimize polar_ok() for non-errors
authorSteffan Karger <steffan.karger@fox-it.com>
Thu, 7 Jan 2016 09:15:16 +0000 (10:15 +0100)
committerGert Doering <gert@greenie.muc.de>
Thu, 7 Jan 2016 10:07:23 +0000 (11:07 +0100)
Adding polar_ok() was a good plan for improving error reporting, but also
added two function calls (one to polar_log_func_line() and one to
polar_log_err()) for each function call wrapped with polar_ok().
Especially in the critical path, this is a waste of time.

To avoid this overhead, add a simple static inline wrapper to reduce it to
a single branch.

v2 - use a static inline wrapper to prevent evaluating 'errval' twice in
     the macro.

Signed-off-by: Steffan Karger <steffan.karger@fox-it.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <1452158116-17363-1-git-send-email-steffan.karger@fox-it.com>
URL: http://article.gmane.org/gmane.network.openvpn.devel/10949
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/crypto_polarssl.h

index bd0f8b865d924d5cbee52881bf6b5ba8d1a257bb..94306eddcea3ee62fb486b7708833103eec08542 100644 (file)
@@ -115,6 +115,15 @@ bool polar_log_err(unsigned int flags, int errval, const char *prefix);
 bool polar_log_func_line(unsigned int flags, int errval, const char *func,
     int line);
 
+/** Wraps polar_log_func_line() to prevent function calls for non-errors */
+static inline bool polar_log_func_line_lite(unsigned int flags, int errval,
+    const char *func, int line) {
+  if (errval) {
+    return polar_log_func_line (flags, errval, func, line);
+  }
+  return true;
+}
+
 /**
  * Check errval and log on error.
  *
@@ -128,7 +137,7 @@ bool polar_log_func_line(unsigned int flags, int errval, const char *func,
  * @returns true if no errors are detected, false otherwise.
  */
 #define polar_ok(errval) \
-  polar_log_func_line(D_CRYPT_ERRORS, errval, __func__, __LINE__)
+  polar_log_func_line_lite(D_CRYPT_ERRORS, errval, __func__, __LINE__)
 
 
 #endif /* CRYPTO_POLARSSL_H_ */