| 
     
      
      
      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.
 |