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