Log up to 1K of buffer content if decoding fails
[yazpp-moved-to-github.git] / src / yaz-z-assoc.cpp
index 04bea5b..e268248 100644 (file)
@@ -1,8 +1,11 @@
 /* This file is part of the yazpp toolkit.
- * Copyright (C) 1998-2008 Index Data and Mike Taylor
+ * Copyright (C) 1998-2012 Index Data and Mike Taylor
  * See the file LICENSE for details.
  */
 
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
 #include <assert.h>
 #include <signal.h>
 
@@ -215,7 +218,15 @@ Z_GDU *Z_Assoc::decode_GDU(const char *buf, int len)
         yaz_log(YLOG_LOG, "PDU decode failed '%s' near byte %ld. Element %s",
                 odr_errmsg(odr_geterror(m_odr_in)),
                 (long) odr_offset(m_odr_in),
-                element ? element : "unknown");
+                element && *element ? element : "unknown");
+        yaz_log(YLOG_LOG, "Buffer length: %d", (int) len);
+        if (len > 0)
+        {
+            WRBUF w = wrbuf_alloc();
+            wrbuf_write_escaped(w, buf, len > 1024 ? 1024 : len);
+            yaz_log(YLOG_LOG, "Buffer bytes: %s", wrbuf_cstr(w));
+            wrbuf_destroy(w);
+        }
         yaz_log(YLOG_LOG, "PDU dump:");
         odr_dumpBER(yaz_log_file(), buf, len);
         return 0;
@@ -420,6 +431,7 @@ Z_ReferenceId* Z_Assoc::getRefID(char* str)
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab