Example #1
0
void
SOCK_Destructor(SocketClass *self)
{
	mylog("SOCK_Destructor\n");
	if (!self)
		return;
#ifndef	NOT_USE_LIBPQ
	if (self->pqconn)
	{
		if (self->via_libpq)
		{
			PQfinish(self->pqconn);
			/* UnloadDelayLoadedDLLs(NULL != self->ssl); */
		}
		self->via_libpq = FALSE;
		self->pqconn = NULL;
#ifdef USE_SSL
		self->ssl = NULL;
#endif
	}
	else
#endif /* NOT_USE_LIBPQ */
	{
		if (self->socket != (SOCKETFD) -1)
		{
			SOCK_put_char(self, 'X');
			if (PG_PROTOCOL_74 == self->pversion)
				SOCK_put_int(self, 4, 4);
			SOCK_flush_output(self);
			closesocket(self->socket);
		}
#ifdef	USE_SSPI
		if (self->ssd)
		{
			ReleaseSvcSpecData(self, (UInt4) -1);
			free(self->ssd);
			self->ssd = NULL;
		}
		self->sspisvcs = 0;
#endif /* USE_SSPI */
#ifdef	USE_GSS
		pg_GSS_cleanup(self);
#endif /* USE_GSS */
	}

	if (self->buffer_in)
		free(self->buffer_in);

	if (self->buffer_out)
		free(self->buffer_out);
	if (self->_errormsg_)
		free(self->_errormsg_);

	free(self);
}
Example #2
0
void
SOCK_Destructor(SocketClass *self)
{
	if (self->socket != -1) {
		SOCK_put_char(self, 'X');
		SOCK_flush_output(self);
		closesocket(self->socket);
	}

	if (self->buffer_in)
		free(self->buffer_in);

	if (self->buffer_out)
		free(self->buffer_out);

	free(self);

}
Example #3
0
void
SOCK_Destructor(SocketClass *self)
{
	if (self->socket != -1) {
        SOCK_put_char(self, 'X');
        SOCK_flush_output(self);
		if ( ! shutdown(self->socket, 2)) /* no sends or receives */
			closesocket(self->socket);
	}

	if (self->buffer_in)
		free(self->buffer_in);

	if (self->buffer_out)
		free(self->buffer_out);

	free(self);

}