From 6064af382324e4e94b2d436e780bf2256f54146a Mon Sep 17 00:00:00 2001
From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org>
Date: Mon, 19 Jul 1999 15:46:45 +0200
Subject: [PATCH] bugfixes

Rev: lib/modules/Protocols.pmod/LysKOM.pmod/Connection.pike:1.3
Rev: lib/modules/Protocols.pmod/LysKOM.pmod/Helper.pmod:1.2
Rev: lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod:1.3
---
 .../LysKOM.pmod/Connection.pike               | 34 ++++++++++++++++---
 .../Protocols.pmod/LysKOM.pmod/Helper.pmod    |  4 +--
 .../Protocols.pmod/LysKOM.pmod/Request.pmod   | 14 ++++----
 3 files changed, 39 insertions(+), 13 deletions(-)

diff --git a/lib/modules/Protocols.pmod/LysKOM.pmod/Connection.pike b/lib/modules/Protocols.pmod/LysKOM.pmod/Connection.pike
index c9abc58e2a..2ea9b4d472 100644
--- a/lib/modules/Protocols.pmod/LysKOM.pmod/Connection.pike
+++ b/lib/modules/Protocols.pmod/LysKOM.pmod/Connection.pike
@@ -1,4 +1,4 @@
-//  $Id: Connection.pike,v 1.2 1999/06/12 23:13:47 mirar Exp $
+//  $Id: Connection.pike,v 1.3 1999/07/19 13:46:42 mirar Exp $
 //! module Protocols
 //! submodule LysKOM
 //! class Session
@@ -35,6 +35,15 @@ import ".";
 object this=this_object();
 object con; // LysKOM.Raw
 
+//! variable int protocol_level
+//! variable string session_software
+//! variable string software_version
+//!	Description of the connected server.
+
+int protocol_level;
+string session_software;
+string software_version;
+
 //!
 //! method void create(string server)
 //! method void create(string server,mapping options)
@@ -57,6 +66,20 @@ void create(string server,void|mapping options)
       return;
    }
 
+   mixed err=catch {
+      object vi=this->get_version_info();
+      protocol_level=vi->protocol_version;
+      session_software=vi->session_software;
+      software_version=vi->software_version;
+   };
+   if (err)
+      if (err->no==2)
+      {
+	 protocol_level=0;
+	 session_software=software_version="unknown";
+      }
+      else throw(err);
+
    if (options->login)
    {
       if (stringp(options->login))
@@ -68,9 +91,12 @@ void create(string server,void|mapping options)
 		  options->login,sizeof(a));
 	 options->login=a[0]->conf_no;
       }
-      this->login(options->login,
-		  options->password||"",
-		  options->invisible);
+      (protocol_level<3 ?
+       this->login_old:
+       this->login)
+	 (options->login,
+	  options->password||"",
+	  options->invisible);
    }
 }
 
diff --git a/lib/modules/Protocols.pmod/LysKOM.pmod/Helper.pmod b/lib/modules/Protocols.pmod/LysKOM.pmod/Helper.pmod
index 02b2edbd10..cca32b8e11 100644
--- a/lib/modules/Protocols.pmod/LysKOM.pmod/Helper.pmod
+++ b/lib/modules/Protocols.pmod/LysKOM.pmod/Helper.pmod
@@ -17,10 +17,10 @@ string B(int(0..1) ... z) // encode bitfield
    return res;
 }
 
-array(string) A(mixed ... z) // encode array (use @)
+array(string) A(array z) // encode array 
 {
    if (!sizeof(z)) return ({"0","*"});
-   return ({""+sizeof(z)," { "+encode(@z)+" }"});
+   return ({""+sizeof(z),"{ "+encode(@z)+" }"});
 }
 
 class LysKOMError
diff --git a/lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod b/lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod
index 4a258bc593..2044f0308f 100644
--- a/lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod
+++ b/lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod
@@ -1,4 +1,4 @@
-//  $Id: Request.pmod,v 1.2 1999/06/14 19:23:14 mirar Exp $
+//  $Id: Request.pmod,v 1.3 1999/07/19 13:46:45 mirar Exp $
 //! module Protocols
 //! submodule LysKOM
 //! submodule Request
@@ -793,16 +793,16 @@ class Create_text_old
    inherit _Request;
 
    array indata(string text,
-                array(int) misc_info)
+                array(string) misc_info)
    {
       return ({28,
                H(text),
-               @A((array(string))misc_info)});
+               @A(misc_info)});
    }
 
    int reply(array what)
    {
-      return what[0]; /* Text-No */
+      return (int)what[0]; /* Text-No */
    }
 
    void failure(object error)
@@ -1431,7 +1431,7 @@ class Create_anonymous_text_old
 
    int reply(array what)
    {
-      return what[0]; /* Text-No */
+      return (int)what[0]; /* Text-No */
    }
 
    void failure(object error)
@@ -2061,7 +2061,7 @@ class Create_text
 
    int reply(array what)
    {
-      return what[0]; /* Text-No */
+      return (int)what[0]; /* Text-No */
    }
 
    void failure(object error)
@@ -2088,7 +2088,7 @@ class Create_anonymous_text
 
    int reply(array what)
    {
-      return what[0]; /* Text-No */
+      return (int)what[0]; /* Text-No */
    }
 
    void failure(object error)
-- 
GitLab