@@ -319,6 +319,8 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
319319 char portNumberStr [32 ];
320320 const char * familyDesc ;
321321 char familyDescBuf [64 ];
322+ const char * addrDesc ;
323+ char addrBuf [NI_MAXHOST ];
322324 char * service ;
323325 struct addrinfo * addrs = NULL ,
324326 * addr ;
@@ -407,7 +409,7 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
407409 break ;
408410 }
409411
410- /* set up family name for possible error messages */
412+ /* set up address family name for log messages */
411413 switch (addr -> ai_family )
412414 {
413415 case AF_INET :
@@ -431,13 +433,28 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
431433 break ;
432434 }
433435
436+ /* set up text form of address for log messages */
437+ #ifdef HAVE_UNIX_SOCKETS
438+ if (addr -> ai_family == AF_UNIX )
439+ addrDesc = unixSocketPath ;
440+ else
441+ #endif
442+ {
443+ pg_getnameinfo_all ((const struct sockaddr_storage * ) addr -> ai_addr ,
444+ addr -> ai_addrlen ,
445+ addrBuf , sizeof (addrBuf ),
446+ NULL , 0 ,
447+ NI_NUMERICHOST );
448+ addrDesc = addrBuf ;
449+ }
450+
434451 if ((fd = socket (addr -> ai_family , SOCK_STREAM , 0 )) == PGINVALID_SOCKET )
435452 {
436453 ereport (LOG ,
437454 (errcode_for_socket_access (),
438- /* translator: %s is IPv4, IPv6, or Unix */
439- errmsg ("could not create %s socket: %m" ,
440- familyDesc )));
455+ /* translator: first %s is IPv4, IPv6, or Unix */
456+ errmsg ("could not create %s socket for address \"%s\" : %m" ,
457+ familyDesc , addrDesc )));
441458 continue ;
442459 }
443460
@@ -461,7 +478,9 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
461478 {
462479 ereport (LOG ,
463480 (errcode_for_socket_access (),
464- errmsg ("setsockopt(SO_REUSEADDR) failed: %m" )));
481+ /* translator: first %s is IPv4, IPv6, or Unix */
482+ errmsg ("setsockopt(SO_REUSEADDR) failed for %s address \"%s\": %m" ,
483+ familyDesc , addrDesc )));
465484 closesocket (fd );
466485 continue ;
467486 }
@@ -476,7 +495,9 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
476495 {
477496 ereport (LOG ,
478497 (errcode_for_socket_access (),
479- errmsg ("setsockopt(IPV6_V6ONLY) failed: %m" )));
498+ /* translator: first %s is IPv4, IPv6, or Unix */
499+ errmsg ("setsockopt(IPV6_V6ONLY) failed for %s address \"%s\": %m" ,
500+ familyDesc , addrDesc )));
480501 closesocket (fd );
481502 continue ;
482503 }
@@ -494,9 +515,9 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
494515 {
495516 ereport (LOG ,
496517 (errcode_for_socket_access (),
497- /* translator: %s is IPv4, IPv6, or Unix */
498- errmsg ("could not bind %s socket : %m" ,
499- familyDesc ),
518+ /* translator: first %s is IPv4, IPv6, or Unix */
519+ errmsg ("could not bind %s address \"%s\" : %m" ,
520+ familyDesc , addrDesc ),
500521 (IS_AF_UNIX (addr -> ai_family )) ?
501522 errhint ("Is another postmaster already running on port %d?"
502523 " If not, remove socket file \"%s\" and retry." ,
@@ -533,12 +554,18 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
533554 {
534555 ereport (LOG ,
535556 (errcode_for_socket_access (),
536- /* translator: %s is IPv4, IPv6, or Unix */
537- errmsg ("could not listen on %s socket : %m" ,
538- familyDesc )));
557+ /* translator: first %s is IPv4, IPv6, or Unix */
558+ errmsg ("could not listen on %s address \"%s\" : %m" ,
559+ familyDesc , addrDesc )));
539560 closesocket (fd );
540561 continue ;
541562 }
563+
564+ ereport (LOG ,
565+ /* translator: first %s is IPv4, IPv6, or Unix */
566+ (errmsg ("listening on %s address \"%s\"" ,
567+ familyDesc , addrDesc )));
568+
542569 ListenSocket [listen_index ] = fd ;
543570 added ++ ;
544571 }
0 commit comments