|
From: <di...@us...> - 2011-12-26 13:51:52
|
Revision: 53763
http://firebird.svn.sourceforge.net/firebird/?rev=53763&view=rev
Author: dimitr
Date: 2011-12-26 13:51:45 +0000 (Mon, 26 Dec 2011)
Log Message:
-----------
A patch resolving client-side crashes with a new fbclient. Thanks to Alex.
Modified Paths:
--------------
firebird/trunk/src/remote/client/interface.cpp
firebird/trunk/src/remote/remote.h
Modified: firebird/trunk/src/remote/client/interface.cpp
===================================================================
--- firebird/trunk/src/remote/client/interface.cpp 2011-12-26 13:35:26 UTC (rev 53762)
+++ firebird/trunk/src/remote/client/interface.cpp 2011-12-26 13:51:45 UTC (rev 53763)
@@ -5850,8 +5850,16 @@
}
// send answer (may be empty) to server
- packet->p_operation = op_cont_auth;
- cBlock.extractDataFromPluginTo(&packet->p_auth_cont);
+ if (port->port_protocol >= PROTOCOL_VERSION13)
+ {
+ packet->p_operation = op_cont_auth;
+ cBlock.extractDataFromPluginTo(&packet->p_auth_cont);
+ }
+ else
+ {
+ packet->p_operation = op_trusted_auth;
+ cBlock.extractDataFromPluginTo(&packet->p_trau.p_trau_data);
+ }
send_packet(port, packet);
memset(&packet->p_auth_cont, 0, sizeof packet->p_auth_cont);
}
@@ -7054,11 +7062,16 @@
}
}
+void ClntAuthBlock::extractDataFromPluginTo(CSTRING* to)
+{
+ to->cstr_length = dataFromPlugin.getCount();
+ to->cstr_address = dataFromPlugin.begin();
+ to->cstr_allocated = 0;
+}
+
void ClntAuthBlock::extractDataFromPluginTo(P_AUTH_CONT* to)
{
- to->p_data.cstr_length = dataFromPlugin.getCount();
- to->p_data.cstr_address = dataFromPlugin.begin();
- to->p_data.cstr_allocated = 0;
+ extractDataFromPluginTo(&to->p_data);
PathName pluginName = getPluginName();
to->p_name.cstr_length = pluginName.length();
Modified: firebird/trunk/src/remote/remote.h
===================================================================
--- firebird/trunk/src/remote/remote.h 2011-12-26 13:35:26 UTC (rev 53762)
+++ firebird/trunk/src/remote/remote.h 2011-12-26 13:51:45 UTC (rev 53763)
@@ -621,6 +621,7 @@
void storeDataForPlugin(unsigned int length, const unsigned char* data);
void resetDataFromPlugin();
void extractDataFromPluginTo(Firebird::ClumpletWriter& dpb, const ParametersSet* tags, int protocol);
+ void extractDataFromPluginTo(CSTRING* to);
void extractDataFromPluginTo(P_AUTH_CONT* to);
void load(Firebird::ClumpletReader& dpb, const ParametersSet*);
void extractDataFromPluginTo(Firebird::ClumpletWriter& user_id);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|