|
From: <di...@us...> - 2011-12-23 18:33:29
|
Revision: 53748
http://firebird.svn.sourceforge.net/firebird/?rev=53748&view=rev
Author: dimitr
Date: 2011-12-23 18:33:23 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
Fixed some compilation errors.
Modified Paths:
--------------
firebird/trunk/src/remote/client/interface.cpp
firebird/trunk/src/remote/inet.cpp
firebird/trunk/src/remote/os/win32/wnet.cpp
firebird/trunk/src/remote/os/win32/wnet_proto.h
firebird/trunk/src/remote/os/win32/xnet.cpp
firebird/trunk/src/remote/os/win32/xnet_proto.h
Modified: firebird/trunk/src/remote/client/interface.cpp
===================================================================
--- firebird/trunk/src/remote/client/interface.cpp 2011-12-23 18:13:55 UTC (rev 53747)
+++ firebird/trunk/src/remote/client/interface.cpp 2011-12-23 18:33:23 UTC (rev 53748)
@@ -4988,7 +4988,7 @@
#if defined(WIN_NT)
if (ISC_analyze_protocol(PROTOCOL_XNET, service_name, node_name))
{
- return XNET_analyze(cBlock, service_name, uv_flag);
+ return XNET_analyze(NULL, service_name, uv_flag);
}
if (ISC_analyze_protocol(PROTOCOL_WNET, service_name, node_name) ||
@@ -4998,7 +4998,7 @@
{
node_name = WNET_LOCALHOST;
}
- return WNET_analyze(cBlock, service_name, node_name.c_str(), uv_flag);
+ return WNET_analyze(NULL, service_name, node_name.c_str(), uv_flag);
}
#endif
@@ -5025,12 +5025,12 @@
#if defined(WIN_NT)
if (!port)
{
- port = XNET_analyze(cBlock, service_name, uv_flag);
+ port = XNET_analyze(NULL, service_name, uv_flag);
}
if (!port)
{
- port = WNET_analyze(cBlock, service_name, WNET_LOCALHOST, uv_flag);
+ port = WNET_analyze(NULL, service_name, WNET_LOCALHOST, uv_flag);
}
#endif
if (!port)
Modified: firebird/trunk/src/remote/inet.cpp
===================================================================
--- firebird/trunk/src/remote/inet.cpp 2011-12-23 18:13:55 UTC (rev 53747)
+++ firebird/trunk/src/remote/inet.cpp 2011-12-23 18:33:23 UTC (rev 53748)
@@ -532,10 +532,10 @@
rem_port* INET_analyze(ClntAuthBlock* cBlock,
- const Firebird::PathName& file_name,
- const TEXT* node_name,
- bool uv_flag,
- ClumpletReader &dpb)
+ const Firebird::PathName& file_name,
+ const TEXT* node_name,
+ bool uv_flag,
+ ClumpletReader &dpb)
{
/**************************************
*
Modified: firebird/trunk/src/remote/os/win32/wnet.cpp
===================================================================
--- firebird/trunk/src/remote/os/win32/wnet.cpp 2011-12-23 18:13:55 UTC (rev 53747)
+++ firebird/trunk/src/remote/os/win32/wnet.cpp 2011-12-23 18:33:23 UTC (rev 53748)
@@ -56,10 +56,10 @@
const char* PIPE_PREFIX = "pipe"; // win32-specific
const char* SERVER_PIPE_SUFFIX = "server";
const char* EVENT_PIPE_SUFFIX = "event";
-Firebird::AtomicCounter event_counter;
+AtomicCounter event_counter;
-static Firebird::GlobalPtr<PortsCleanup> wnet_ports;
-static Firebird::GlobalPtr<Firebird::Mutex> init_mutex;
+static GlobalPtr<PortsCleanup> wnet_ports;
+static GlobalPtr<Mutex> init_mutex;
static volatile bool wnet_initialized = false;
static volatile bool wnet_shutdown = false;
@@ -81,7 +81,7 @@
static bool_t xdrwnet_endofrecord(XDR*);//, int);
static int wnet_destroy(XDR*);
static bool wnet_error(rem_port*, const TEXT*, ISC_STATUS, int);
-static void wnet_gen_error(rem_port*, const Firebird::Arg::StatusVector& v);
+static void wnet_gen_error(rem_port*, const Arg::StatusVector& v);
static bool_t wnet_getbytes(XDR*, SCHAR*, u_int);
static bool_t wnet_getlong(XDR*, SLONG*);
static u_int wnet_getpostn(XDR*);
@@ -113,7 +113,10 @@
};
-rem_port* WNET_analyze(const Firebird::PathName& file_name, const TEXT* node_name, bool uv_flag)
+rem_port* WNET_analyze(ClntAuthBlock* cBlock,
+ const PathName& file_name,
+ const TEXT* node_name,
+ bool uv_flag)
{
/**************************************
*
@@ -137,8 +140,12 @@
PACKET* packet = &rdb->rdb_packet;
// Pick up some user identification information
- Firebird::string buffer;
- Firebird::ClumpletWriter user_id(Firebird::ClumpletReader::UnTagged, MAX_DPB_SIZE);
+ string buffer;
+ ClumpletWriter user_id(ClumpletReader::UnTagged, 64000);
+ if (cBlock)
+ {
+ cBlock->extractDataFromPluginTo(user_id);
+ }
ISC_get_user(&buffer, 0, 0);
buffer.lower();
@@ -286,32 +293,68 @@
port->receive(packet);
}
- if (packet->p_operation != op_accept)
+ P_ACPT* accept = NULL;
+ switch (packet->p_operation)
{
+ case op_accept_data:
+ accept = &packet->p_acpd;
+ if (cBlock)
+ {
+ cBlock->storeDataForPlugin(packet->p_acpd.p_acpt_data.cstr_length,
+ packet->p_acpd.p_acpt_data.cstr_address);
+ cBlock->authComplete = packet->p_acpd.p_acpt_authenticated;
+ }
+ break;
+
+ case op_accept:
+ if (cBlock)
+ {
+ cBlock->reset(&file_name);
+ }
+ accept = &packet->p_acpt;
+ break;
+
+ case op_response:
+ try
+ {
+ Firebird::LocalStatus warning; // Ignore connect warnings for a while
+ REMOTE_check_response(&warning, rdb, packet);
+ }
+ catch(const Firebird::Exception&)
+ {
+ disconnect(port);
+ delete rdb;
+ throw;
+ }
+ // fall through - response is not a required accept
+
+ default:
disconnect(port);
delete rdb;
-
Arg::Gds(isc_connect_reject).raise();
+ break;
}
- port->port_protocol = packet->p_acpt.p_acpt_version;
+ fb_assert(accept);
+ fb_assert(port);
+ port->port_protocol = accept->p_acpt_version;
// once we've decided on a protocol, concatenate the version
// string to reflect it...
- Firebird::string temp;
+ string temp;
temp.printf("%s/P%d", port->port_version->str_data,
port->port_protocol & FB_PROTOCOL_MASK);
delete port->port_version;
port->port_version = REMOTE_make_string(temp.c_str());
- if (packet->p_acpt.p_acpt_architecture == ARCHITECTURE)
+ if (accept->p_acpt_architecture == ARCHITECTURE)
port->port_flags |= PORT_symmetric;
- if (packet->p_acpt.p_acpt_type == ptype_rpc)
+ if (accept->p_acpt_type == ptype_rpc)
port->port_flags |= PORT_rpc;
- if (packet->p_acpt.p_acpt_type != ptype_out_of_band)
+ if (accept->p_acpt_type != ptype_out_of_band)
port->port_flags |= PORT_no_oob;
return port;
@@ -408,7 +451,7 @@
TEXT name[MAXPATHLEN];
GetModuleFileName(NULL, name, sizeof(name));
- Firebird::string cmdLine;
+ string cmdLine;
cmdLine.printf("%s -w -h %"HANDLEFORMAT"@%"ULONGFORMAT, name, port->port_pipe, GetCurrentProcessId());
STARTUPINFO start_crud;
@@ -494,11 +537,11 @@
**************************************/
// Default account to "guest" (in theory all packets contain a name)
- Firebird::string name("guest"), password;
+ string name("guest"), password;
// Pick up account and password, if given. The password is ignored
- Firebird::ClumpletReader id(Firebird::ClumpletReader::UnTagged,
+ ClumpletReader id(ClumpletReader::UnTagged,
cnct->p_cnct_user_id.cstr_address, cnct->p_cnct_user_id.cstr_length);
for (id.rewind(); !id.isEof(); id.moveNext())
@@ -540,7 +583,7 @@
if (!wnet_initialized)
{
- Firebird::MutexLockGuard guard(init_mutex);
+ MutexLockGuard guard(init_mutex);
if (!wnet_initialized)
{
wnet_initialized = true;
@@ -852,7 +895,7 @@
* If a server pid != 0, append it to pipe name as <>/<pid>
*
**************************************/
- Firebird::string buffer("\\\\");
+ string buffer("\\\\");
const TEXT* p = connect_name;
@@ -1061,7 +1104,7 @@
}
-static void wnet_gen_error (rem_port* port, const Firebird::Arg::StatusVector& v)
+static void wnet_gen_error (rem_port* port, const Arg::StatusVector& v)
{
/**************************************
*
Modified: firebird/trunk/src/remote/os/win32/wnet_proto.h
===================================================================
--- firebird/trunk/src/remote/os/win32/wnet_proto.h 2011-12-23 18:13:55 UTC (rev 53747)
+++ firebird/trunk/src/remote/os/win32/wnet_proto.h 2011-12-23 18:33:23 UTC (rev 53748)
@@ -31,7 +31,7 @@
#endif
-rem_port* WNET_analyze(const Firebird::PathName&, const TEXT*, bool);
+rem_port* WNET_analyze(ClntAuthBlock*, const Firebird::PathName&, const TEXT*, bool);
rem_port* WNET_connect(const TEXT*, struct packet*, USHORT);
rem_port* WNET_reconnect(HANDLE);
Modified: firebird/trunk/src/remote/os/win32/xnet.cpp
===================================================================
--- firebird/trunk/src/remote/os/win32/xnet.cpp 2011-12-23 18:13:55 UTC (rev 53747)
+++ firebird/trunk/src/remote/os/win32/xnet.cpp 2011-12-23 18:33:23 UTC (rev 53748)
@@ -200,7 +200,7 @@
#define ERR_STR(str) (str)
#endif
-rem_port* XNET_analyze(const PathName& file_name, bool uv_flag)
+rem_port* XNET_analyze(ClntAuthBlock* cBlock, const PathName& file_name, bool uv_flag)
{
/**************************************
*
@@ -225,7 +225,11 @@
// Pick up some user identification information
string buffer;
- ClumpletWriter user_id(ClumpletReader::UnTagged, MAX_DPB_SIZE);
+ ClumpletWriter user_id(ClumpletReader::UnTagged, 64000);
+ if (cBlock)
+ {
+ cBlock->extractDataFromPluginTo(user_id);
+ }
ISC_get_user(&buffer, 0, 0);
buffer.lower();
@@ -371,15 +375,51 @@
port->receive(packet);
}
- if (packet->p_operation != op_accept)
+ P_ACPT* accept = NULL;
+ switch (packet->p_operation)
{
+ case op_accept_data:
+ accept = &packet->p_acpd;
+ if (cBlock)
+ {
+ cBlock->storeDataForPlugin(packet->p_acpd.p_acpt_data.cstr_length,
+ packet->p_acpd.p_acpt_data.cstr_address);
+ cBlock->authComplete = packet->p_acpd.p_acpt_authenticated;
+ }
+ break;
+
+ case op_accept:
+ if (cBlock)
+ {
+ cBlock->reset(&file_name);
+ }
+ accept = &packet->p_acpt;
+ break;
+
+ case op_response:
+ try
+ {
+ Firebird::LocalStatus warning; // Ignore connect warnings for a while
+ REMOTE_check_response(&warning, rdb, packet);
+ }
+ catch(const Firebird::Exception&)
+ {
+ disconnect(port);
+ delete rdb;
+ throw;
+ }
+ // fall through - response is not a required accept
+
+ default:
disconnect(port);
delete rdb;
-
Arg::Gds(isc_connect_reject).raise();
+ break;
}
- port->port_protocol = packet->p_acpt.p_acpt_version;
+ fb_assert(accept);
+ fb_assert(port);
+ port->port_protocol = accept->p_acpt_version;
// Once we've decided on a protocol, concatenate the version
// string to reflect it...
@@ -391,13 +431,13 @@
delete port->port_version;
port->port_version = REMOTE_make_string(temp.c_str());
- if (packet->p_acpt.p_acpt_architecture == ARCHITECTURE)
+ if (accept->p_acpt_architecture == ARCHITECTURE)
port->port_flags |= PORT_symmetric;
- if (packet->p_acpt.p_acpt_type == ptype_rpc)
+ if (accept->p_acpt_type == ptype_rpc)
port->port_flags |= PORT_rpc;
- if (packet->p_acpt.p_acpt_type != ptype_out_of_band)
+ if (accept->p_acpt_type != ptype_out_of_band)
port->port_flags |= PORT_no_oob;
return port;
Modified: firebird/trunk/src/remote/os/win32/xnet_proto.h
===================================================================
--- firebird/trunk/src/remote/os/win32/xnet_proto.h 2011-12-23 18:13:55 UTC (rev 53747)
+++ firebird/trunk/src/remote/os/win32/xnet_proto.h 2011-12-23 18:33:23 UTC (rev 53748)
@@ -32,7 +32,7 @@
#define rem_port void
#endif
-rem_port* XNET_analyze(const Firebird::PathName&, bool);
+rem_port* XNET_analyze(ClntAuthBlock*, const Firebird::PathName&, bool);
rem_port* XNET_connect(struct packet*, USHORT);
rem_port* XNET_reconnect(ULONG);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|