[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdelibs/dcop
From: Waldo Bastian <bastian () kde ! org>
Date: 2004-07-10 17:16:23
Message-ID: 20040710171623.D686F16B1C () office ! kde ! org
[Download RAW message or body]
CVS commit by waba:
Revert last change: It can confuse older dcop clients
M +56 -3 dcopserver.cpp 1.169
--- kdelibs/dcop/dcopserver.cpp #1.168:1.169
@@ -877,5 +877,32 @@ static const IcePaVersionRec DCOPServerV
};
-static Status DCOPServerProtocolSetupProc ( IceConn /*iceConn*/,
+static const IcePoVersionRec DUMMYVersions[] = {
+ { DCOPVersionMajor, DCOPVersionMinor, 0 }
+};
+
+typedef struct DCOPServerConnStruct *DCOPServerConn;
+
+struct DCOPServerConnStruct
+{
+ /*
+ * We use ICE to esablish a connection with the client.
+ */
+
+ IceConn iceConn;
+
+
+ /*
+ * Major and minor versions of the XSMP.
+ */
+
+ int proto_major_version;
+ int proto_minor_version;
+
+
+ QCString clientId;
+};
+
+
+static Status DCOPServerProtocolSetupProc ( IceConn iceConn,
int majorVersion, int minorVersion,
char* vendor, char* release,
@@ -883,4 +910,6 @@ static Status DCOPServerProtocolSetupPro
char **/*failureReasonRet*/)
{
+ DCOPServerConn serverConn;
+
/*
* vendor/release are undefined for ProtocolSetup in DCOP
@@ -892,7 +921,20 @@ static Status DCOPServerProtocolSetupPro
free (release);
- *clientDataRet = 0;
- return (majorVersion == DCOPVersionMajor && minorVersion == DCOPVersionMinor);
+ /*
+ * Allocate new DCOPServerConn.
+ */
+
+ serverConn = new DCOPServerConnStruct;
+
+ serverConn->iceConn = iceConn;
+ serverConn->proto_major_version = majorVersion;
+ serverConn->proto_minor_version = minorVersion;
+ //serverConn->clientId already initialized
+
+ *clientDataRet = static_cast<IcePointer>(serverConn);
+
+
+ return 1;
}
@@ -918,4 +960,15 @@ DCOPServer::DCOPServer(bool _suicide)
dcopSignals = new DCOPSignals;
+ extern int _kde_IceLastMajorOpcode; // from libICE
+ if (_kde_IceLastMajorOpcode < 1 )
+ IceRegisterForProtocolSetup(const_cast<char *>("DUMMY"),
+ const_cast<char *>("DUMMY"),
+ const_cast<char *>("DUMMY"),
+ 1, const_cast<IcePoVersionRec *>(DUMMYVersions),
+ DCOPAuthCount, const_cast<char **>(DCOPAuthNames),
+ DCOPClientAuthProcs, 0);
+ if (_kde_IceLastMajorOpcode < 1 )
+ qWarning("DCOPServer Error: incorrect major opcode!");
+
the_server = this;
if (( majorOpcode = IceRegisterForProtocolReply (const_cast<char *>("DCOP"),
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic