Commit 50729ac7 authored by Bruce Momjian's avatar Bruce Momjian

Patch from Goran Thyni

parent 242625f2
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.24 1997/11/07 20:51:34 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.25 1997/11/10 02:21:18 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -582,15 +582,16 @@ static void do_unlink() ...@@ -582,15 +582,16 @@ static void do_unlink()
int int
StreamServerPort(char *hostName, short portName, int *fdP) StreamServerPort(char *hostName, short portName, int *fdP)
{ {
struct sockaddr_in sin; union {
struct sockaddr_un sun; struct sockaddr_in in;
struct sockaddr_un un;
} saddr;
int fd, err, family; int fd, err, family;
size_t len;
int one = 1; int one = 1;
family = hostName != NULL ? AF_INET : AF_UNIX; family = hostName != NULL ? AF_INET : AF_UNIX;
MemSet((char *) &sin, 0, sizeof sin);
if ((fd = socket(family, SOCK_STREAM, 0)) < 0) if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
{ {
sprintf(PQerrormsg, sprintf(PQerrormsg,
...@@ -611,23 +612,21 @@ StreamServerPort(char *hostName, short portName, int *fdP) ...@@ -611,23 +612,21 @@ StreamServerPort(char *hostName, short portName, int *fdP)
pqdebug("%s", PQerrormsg); pqdebug("%s", PQerrormsg);
return (STATUS_ERROR); return (STATUS_ERROR);
} }
bzero(&saddr, sizeof(saddr));
if (family == AF_UNIX) if (family == AF_UNIX)
{ {
size_t len; saddr.un.sun_family = family;
bzero(&sun, sizeof(sun)); len = UNIXSOCK_PATH(saddr.un,portName);
sun.sun_family = family; strcpy(sock_path, saddr.un.sun_path);
len = UNIXSOCK_PATH(sun,portName);
strcpy(sock_path, sun.sun_path);
err = bind(fd, (struct sockaddr *) &sun, len);
} }
else else
{ {
bzero(&sin, sizeof(sin)); saddr.in.sin_family = family;
sin.sin_family = family; saddr.in.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_addr.s_addr = htonl(INADDR_ANY); saddr.in.sin_port = htons(portName);
sin.sin_port = htons(portName); len = sizeof saddr.in;
err = bind(fd, (struct sockaddr *) &sin, sizeof sin);
} }
err = bind(fd, (struct sockaddr *) &saddr, len);
if (err < 0) if (err < 0)
{ {
sprintf(PQerrormsg, sprintf(PQerrormsg,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment