I have applied the following patch to properly exit ODBC. I also
patched the ODBC makefile so it links under BSD/OS. The -Bsymbolic
under BSD/OS is very harsh under BSD/OS, requiring all symbols even in
libc and crt1.o to be resolved before creating the shared library.
My 'ld' manual says:
-Bsymbolic
When creating a shared library, bind references to
global symbols to the definition within the shared
library, if any. Normally, it is possible for a
program linked against a shared library to override
the definition within the shared library. This op-
tion is only meaningful on ELF platforms which sup-
port shared libraries.
--
Bruce Momjian | http://candle.pha.pa.us
[EMAIL PROTECTED] | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Index: src/interfaces/odbc/GNUmakefile
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/odbc/GNUmakefile,v
retrieving revision 1.8
diff -c -r1.8 GNUmakefile
*** src/interfaces/odbc/GNUmakefile 2000/12/16 18:14:25 1.8
--- src/interfaces/odbc/GNUmakefile 2001/02/10 04:25:23
***************
*** 24,30 ****
gpps.o tuple.o tuplelist.o dlg_specific.o $(OBJX)
SHLIB_LINK = $(filter -lm, $(LIBS))
-
all: all-lib
# Shared library stuff
--- 24,29 ----
***************
*** 33,39 ****
--- 32,46 ----
# Symbols must be resolved to the version in the shared library because
# the driver manager (e.g., iodbc) provides some symbols with the same
# names and we don't want those. (This issue is probably ELF specific.)
+ #
+ # BSD/OS fails with libc and crt1.o undefined symbols without this.
+ # bjm 2001-02-09
+ #
+ ifneq ($(PORTNAME), bsdi)
LINK.shared += $(shlib_symbolic)
+ endif
odbc_headers = isql.h isqlext.h iodbc.h
odbc_includedir = $(includedir)/iodbc
Index: src/interfaces/odbc/socket.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/odbc/socket.c,v
retrieving revision 1.7
diff -c -r1.7 socket.c
*** src/interfaces/odbc/socket.c 2000/05/27 03:35:14 1.7
--- src/interfaces/odbc/socket.c 2001/02/10 04:25:29
***************
*** 1,4 ****
-
/* Module: socket.c
*
* Description: This module contains functions for low level socket
--- 1,3 ----
***************
*** 78,84 ****
--- 77,87 ----
{
if (self->socket != -1) {
if ( ! shutdown(self->socket, 2)) /* no sends or receives */
+ {
+ SOCK_put_char(self, 'X');
+ SOCK_flush_output(self);
closesocket(self->socket);
+ }
}
if (self->buffer_in)