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); }
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); }
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); }