diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index 204578cb64..41280c8bbc 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.39 1998/02/26 04:31:53 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.40 1998/03/02 05:41:53 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -564,8 +564,8 @@ static char sock_path[MAXPGPATH + 1] = ""; * Shutdown routine for backend connection * If a Unix socket is used for communication, explicitly close it. */ -static void -do_unlink() +void +StreamDoUnlink() { if (sock_path[0]) unlink(sock_path); @@ -645,7 +645,6 @@ StreamServerPort(char *hostName, short portName, int *fdP) if (family == AF_UNIX) { chmod(sock_path, 0777); - atexit(do_unlink); } return (STATUS_OK); } diff --git a/src/backend/storage/ipc/ipc.c b/src/backend/storage/ipc/ipc.c index b0219b5635..28fbd87a99 100644 --- a/src/backend/storage/ipc/ipc.c +++ b/src/backend/storage/ipc/ipc.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.19 1998/02/26 04:35:38 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.20 1998/03/02 05:41:55 scrappy Exp $ * * NOTES * @@ -38,6 +38,7 @@ #include #include #include "utils/memutils.h" +#include "libpq/libpq.h" #if defined(sparc_solaris) #include @@ -136,6 +137,7 @@ exitpg(int code) for (i = onexit_index - 1; i >= 0; --i) (*onexit_list[i].function) (code, onexit_list[i].arg); + StreamDoUnlink(); exit(code); } diff --git a/src/include/libpq/libpq.h b/src/include/libpq/libpq.h index 57ec39576d..0893b646fb 100644 --- a/src/include/libpq/libpq.h +++ b/src/include/libpq/libpq.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: libpq.h,v 1.12 1998/02/26 04:41:51 momjian Exp $ + * $Id: libpq.h,v 1.13 1998/03/02 05:42:06 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -282,5 +282,6 @@ extern void pq_async_notify(void); extern int StreamServerPort(char *hostName, short portName, int *fdP); extern int StreamConnection(int server_fd, Port *port); extern void StreamClose(int sock); +extern void StreamDoUnlink(void); #endif /* LIBPQ_H */ diff --git a/src/include/libpq/pqcomm.h b/src/include/libpq/pqcomm.h index 0b06de0df1..59a70b655c 100644 --- a/src/include/libpq/pqcomm.h +++ b/src/include/libpq/pqcomm.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: pqcomm.h,v 1.23 1998/02/26 04:41:53 momjian Exp $ + * $Id: pqcomm.h,v 1.24 1998/03/02 05:42:15 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -35,8 +35,9 @@ typedef union SockAddr /* Configure the UNIX socket address for the well known port. */ #define UNIXSOCK_PATH(sun,port) \ - (sprintf((sun).sun_path, "/tmp/.s.PGSQL.%d", (port)) + \ - offsetof(struct sockaddr_un, sun_path)) + (sprintf((sun).sun_path, "/tmp/.s.PGSQL.%d", (port)), \ + strlen((sun).sun_path)+ offsetof(struct sockaddr_un, sun_path)) + /* * We do this because sun_len is in BSD's struct, while others don't. * We never actually set BSD's sun_len, and I can't think of a