Release 1.6.4
[yazpp-moved-to-github.git] / zlint / zlint.cpp
index 7a89a52..7ed83b7 100644 (file)
@@ -1,10 +1,11 @@
-/*
- * Copyright (c) 2004, Index Data.
+/* This file is part of the yazpp toolkit.
+ * Copyright (C) Index Data 
  * See the file LICENSE for details.
- * 
- * $Id: zlint.cpp,v 1.12 2005-09-22 12:40:45 adam Exp $
  */
 
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
 #include <stdio.h>
 #include <stdarg.h>
 
@@ -13,6 +14,7 @@
 #include <yaz/otherinfo.h>
 #include <yaz/charneg.h>
 #include <yaz/log.h>
+#include <yaz/odr.h>
 
 #include <zlint.h>
 
@@ -34,9 +36,9 @@ private:
     int m_test_reported;
 };
 
-Zlint::Zlint(IPDU_Observable *the_PDU_Observable) : 
+Zlint::Zlint(IPDU_Observable *the_PDU_Observable) :
     Z_Assoc(the_PDU_Observable)
-    
+
 {
     m_PDU_Observable = the_PDU_Observable;
     m_host = 0;
@@ -78,13 +80,12 @@ void Zlint::timeoutNotify()
     {
         if (m_cur_test->m_t->recv_fail(this, 2) != TEST_FINISHED)
         {
-            close();
             client(m_host);
             timeout(30);
             return;
         }
+        close_goto_next();
     }
-    close_goto_next();
 }
 
 void Zlint::failNotify()
@@ -93,13 +94,12 @@ void Zlint::failNotify()
     {
         if (m_cur_test->m_t->recv_fail(this, 1) != TEST_FINISHED)
         {
-            close();
             client(m_host);
             timeout(30);
             return;
         }
+        close_goto_next();
     }
-    close_goto_next();
 }
 
 void Zlint::connectNotify()
@@ -108,8 +108,8 @@ void Zlint::connectNotify()
     {
         if (m_cur_test->m_t->init(this) != TEST_FINISHED)
             return;
+        close_goto_next();
     }
-    close_goto_next();
 }
 
 void Zlint::recv_GDU(Z_GDU *gdu, int len)
@@ -121,23 +121,25 @@ void Zlint::recv_GDU(Z_GDU *gdu, int len)
             return;
         if (r == TEST_REOPEN)
         {
-            close();
             client(m_host);
             timeout(30);
             return;
         }
+        close_goto_next();
     }
-    close_goto_next();
 }
 
 void Zlint::close_goto_next()
 {
-    close();
     if (m_cur_test)
         m_cur_test = m_cur_test->m_next;
     if (m_cur_test)
+    {
         client(m_host);
-    timeout(30);
+        timeout(30);
+    }
+    else
+        close();
 }
 
 IPDU_Observer *Zlint::sessionNotify(
@@ -148,26 +150,22 @@ IPDU_Observer *Zlint::sessionNotify(
 
 Z_ReferenceId *Zlint::mk_refid(const char *buf, int len)
 {
-    Z_ReferenceId *id = 
-        (Z_ReferenceId *) odr_malloc(odr_encode(), sizeof(*id));
-    id->size = id->len = len;
-    id->buf = (unsigned char*) odr_malloc(odr_encode(), len);
-    memcpy(id->buf, buf, len);
-    return id;
+    return odr_create_Odr_oct(odr_encode(),
+#if YAZ_VERSIONL < 0x50000
+                              (unsigned char *)
+#endif
+                              buf, len);
 }
 
 int Zlint::initResponseGetVersion(Z_InitResponse *init)
 {
     int no = 0;
-    int off = 0;
     int i;
     for (i = 0; i<12; i++)
         if (ODR_MASK_GET(init->protocolVersion, no))
         {
             no = i+1;
         }
-        else
-            off = 1;
     return no;
 }
 
@@ -271,6 +269,7 @@ Zlint_code Zlint_test_simple::recv_fail(Zlint *z, int reason)
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab