8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-24 18:43:02 +01:00

Finalized the remote cleanup by Dmitry Kovalenko.

This commit is contained in:
dimitr 2009-05-08 09:23:34 +00:00
parent d42ed19e80
commit 0f776b2517
4 changed files with 20 additions and 58 deletions

View File

@ -313,7 +313,6 @@ static bool select_wait(rem_port*, slct_t*);
static int send_full(rem_port*, PACKET *);
static int send_partial(rem_port*, PACKET *);
static void unhook_port(rem_port*, rem_port*);
static int xdrinet_create(XDR*, rem_port*, UCHAR *, USHORT, enum xdr_op);
static bool setNoNagleOption(rem_port*);
static FPTR_INT tryStopMainThread = 0;
@ -582,7 +581,7 @@ rem_port* INET_connect(const TEXT* name,
}
#endif
rem_port* port = alloc_port(0);
rem_port* port = alloc_port(NULL);
port->port_status_vector = status_vector;
REMOTE_get_timeout_params(port, dpb);
status_vector[0] = isc_arg_gds;
@ -936,7 +935,7 @@ rem_port* INET_reconnect(HANDLE handle, ISC_STATUS* status_vector)
* a port block.
*
**************************************/
rem_port* port = alloc_port(0);
rem_port* port = alloc_port(NULL);
port->port_status_vector = status_vector;
status_vector[0] = isc_arg_gds;
status_vector[1] = 0;
@ -974,7 +973,7 @@ rem_port* INET_server(int sock)
*
**************************************/
int n = 0;
rem_port* port = alloc_port(0);
rem_port* port = alloc_port(NULL);
port->port_flags |= PORT_server;
port->port_server_flags |= SRVR_server;
port->port_handle = (HANDLE) sock;
@ -1133,7 +1132,7 @@ static bool accept_connection(rem_port* port, const P_CNCT* cnct)
}
static rem_port* alloc_port( rem_port* parent)
static rem_port* alloc_port(rem_port* const parent)
{
/**************************************
*
@ -1443,7 +1442,7 @@ static THREAD_ENTRY_DECLARE waitThread(THREAD_ENTRY_PARAM)
}
#endif // !defined(WIN_NT)
static void disconnect( rem_port* port)
static void disconnect(rem_port* const port)
{
/**************************************
*
@ -1484,7 +1483,6 @@ static void disconnect( rem_port* port)
#endif // WIN_NT
// If this is a sub-port, unlink it from it's parent
Firebird::MutexLockGuard guard(port_mutex);
port->port_state = rem_port::DISCONNECTED;
@ -1493,10 +1491,8 @@ static void disconnect( rem_port* port)
port->port_async = NULL;
}
rem_port* parent = port->port_parent;
if (parent != NULL) {
unhook_port(port, parent);
}
// If this is a sub-port, unlink it from it's parent
port->unlinkParent();
inet_ports->unRegisterPort(port);
@ -3161,32 +3157,6 @@ static bool packet_send( rem_port* port, const SCHAR* buffer, SSHORT buffer_leng
return true;
}
static void unhook_port( rem_port* port, rem_port* parent)
{
/**************************************
*
* u n h o o k _ p a r e n t
*
**************************************
*
* Functional description
* Disconnect a port from its parent
* This must be done under port_mutex control.
*
**************************************/
for (rem_port** ptr = &parent->port_clients; *ptr; ptr = &(*ptr)->port_next)
{
if (*ptr == port) {
*ptr = port->port_next;
if (ptr == &parent->port_clients) {
parent->port_next = *ptr;
}
break;
}
}
}
static bool setNoNagleOption(rem_port* port)
{
/**************************************

View File

@ -799,12 +799,7 @@ static void disconnect(rem_port* port)
}
// If this is a sub-port, unlink it from its parent
rem_port* const parent = port->port_parent;
if (parent)
{
port->unlinkParent();
}
if (port->port_server_flags & SRVR_server)
{

View File

@ -618,12 +618,13 @@ static void cleanup_memory(void* /*block*/)
void rem_port::linkParent(rem_port* const parent)
{
fb_assert(parent);
fb_assert(this->port_parent == NULL);
port_parent = parent;
port_next = parent->port_clients;
port_handle = parent->port_handle;
port_server = parent->port_server;
port_server_flags = parent->port_server_flags;
this->port_parent = parent;
this->port_next = parent->port_clients;
this->port_handle = parent->port_handle;
this->port_server = parent->port_server;
this->port_server_flags = parent->port_server_flags;
parent->port_clients = parent->port_next = this;
}
@ -635,7 +636,7 @@ void rem_port::unlinkParent()
if (this->port_parent == NULL)
return;
#if DEV_BUILD
#ifdef DEV_BUILD
bool found = false;
#endif
@ -652,7 +653,7 @@ void rem_port::unlinkParent()
this->port_parent->port_next = *ptr;
}
#if DEV_BUILD
#ifdef DEV_BUILD
found = true;
#endif
break;

View File

@ -1320,7 +1320,7 @@ static rem_port* connect_client(PACKET* packet, ISC_STATUS* status_vector)
UCHAR* const channel_s2c_client_ptr = start_ptr + avail;
rem_port* port =
alloc_port(0,
alloc_port(NULL,
channel_c2s_client_ptr,
xcc->xcc_send_channel->xch_size,
channel_s2c_client_ptr,
@ -1468,17 +1468,13 @@ static void disconnect(rem_port* port)
*
**************************************/
// If this is a sub-port, unlink it from it's parent
if (port->port_async) {
disconnect(port->port_async);
port->port_async = NULL;
}
rem_port* const parent = port->port_parent;
if (parent != NULL) {
// If this is a sub-port, unlink it from it's parent
port->unlinkParent();
}
if (port->port_flags & PORT_server)
xnet_ports->unRegisterPort(port);
@ -2601,7 +2597,7 @@ static rem_port* get_server_port(ULONG client_pid,
// finally, allocate and set the port structure for this client
port = alloc_port(0,
port = alloc_port(NULL,
channel_s2c_data_buffer,
xcc->xcc_send_channel->xch_size,
channel_c2s_data_buffer,