Repository: qpid-proton
Updated Branches:
  refs/heads/master 6f2105d41 -> aa53a6c00


PROTON-823: Fixed the openssl logging to respect the tracing flagsi
(as much as possible)


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/aa53a6c0
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/aa53a6c0
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/aa53a6c0

Branch: refs/heads/master
Commit: aa53a6c00060695a974918bbd574ce555ca14636
Parents: 6f2105d
Author: Andrew Stitcher <[email protected]>
Authored: Wed Feb 18 18:32:13 2015 -0500
Committer: Andrew Stitcher <[email protected]>
Committed: Fri Feb 20 14:29:28 2015 -0500

----------------------------------------------------------------------
 proton-c/src/ssl/openssl.c | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/aa53a6c0/proton-c/src/ssl/openssl.c
----------------------------------------------------------------------
diff --git a/proton-c/src/ssl/openssl.c b/proton-c/src/ssl/openssl.c
index c2b2bfe..b9331d5 100644
--- a/proton-c/src/ssl/openssl.c
+++ b/proton-c/src/ssl/openssl.c
@@ -150,24 +150,32 @@ static pn_ssl_session_t *ssn_cache_find( pn_ssl_domain_t 
*, const char * );
 static void ssl_session_free( pn_ssl_session_t *);
 static size_t buffered_output( pn_transport_t *transport );
 
-// @todo: used to avoid littering the code with calls to printf...
-static void ssl_log(pn_transport_t *transport, const char *fmt, ...)
+static void ssl_vlog(pn_transport_t *transport, const char *fmt, va_list ap)
 {
-  if (PN_TRACE_DRV & transport->trace) {
-    va_list ap;
-    va_start(ap, fmt);
+  if (transport) {
+    if (PN_TRACE_DRV & transport->trace) {
+      pn_transport_vlogf(transport, fmt, ap);
+    }
+  } else {
     pn_transport_vlogf(transport, fmt, ap);
-    va_end(ap);
   }
 }
 
+static void ssl_log(pn_transport_t *transport, const char *fmt, ...)
+{
+  va_list ap;
+  va_start(ap, fmt);
+  ssl_vlog(transport, fmt, ap);
+  va_end(ap);
+}
+
 static void ssl_log_flush(pn_transport_t* transport)
 {
   char buf[128];        // see "man ERR_error_string_n()"
   unsigned long err = ERR_get_error();
   while (err) {
     ERR_error_string_n(err, buf, sizeof(buf));
-    pn_transport_logf(transport, "%s", buf);
+    ssl_log(transport, "%s", buf);
     err = ERR_get_error();
   }
 }
@@ -175,21 +183,14 @@ static void ssl_log_flush(pn_transport_t* transport)
 // log an error and dump the SSL error stack
 static void ssl_log_error(const char *fmt, ...)
 {
-  va_list ap;
-
   if (fmt) {
+    va_list ap;
     va_start(ap, fmt);
-    pn_transport_vlogf(NULL, fmt, ap);
+    ssl_vlog(NULL, fmt, ap);
     va_end(ap);
   }
 
-  char buf[128];        // see "man ERR_error_string_n()"
-  unsigned long err = ERR_get_error();
-  while (err) {
-    ERR_error_string_n(err, buf, sizeof(buf));
-    pn_transport_logf(NULL, "%s", buf);
-    err = ERR_get_error();
-  }
+  ssl_log_flush(NULL);
 }
 
 static void ssl_log_clear_data(pn_transport_t *transport, const char *data, 
size_t len)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to