فهرست منبع

Use PF_LOCAL to match BSD semantics of api calls.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2226 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 16 سال پیش
والد
کامیت
0d98fca548
2فایلهای تغییر یافته به همراه9 افزوده شده و 6 حذف شده
  1. 3 3
      exec/coroipcs.c
  2. 6 3
      lib/coroipcc.c

+ 3 - 3
exec/coroipcs.c

@@ -778,7 +778,7 @@ extern void coroipcs_ipc_init (
 	/*
 	 * Create socket for IPC clients, name socket, listen for connections
 	 */
-	server_fd = socket (PF_UNIX, SOCK_STREAM, 0);
+	server_fd = socket (PF_LOCAL, SOCK_STREAM, 0);
 	if (server_fd == -1) {
 		api->log_printf ("Cannot create client connections socket.\n");
 		api->fatal_error ("Can't create library listen socket");
@@ -793,7 +793,7 @@ extern void coroipcs_ipc_init (
 	memset (&un_addr, 0, sizeof (struct sockaddr_un));
 	un_addr.sun_family = AF_UNIX;
 #if defined(COROSYNC_BSD) || defined(COROSYNC_DARWIN)
-	un_addr.sun_len = sizeof(struct sockaddr_un);
+	un_addr.sun_len = SUN_LEN(&un_addr);
 #endif
 
 #if defined(COROSYNC_LINUX)
@@ -805,7 +805,7 @@ extern void coroipcs_ipc_init (
 
 	res = bind (server_fd, (struct sockaddr *)&un_addr, COROSYNC_SUN_LEN(&un_addr));
 	if (res) {
-		api->log_printf ("Could not bind AF_UNIX: %s.\n", strerror (errno));
+		api->log_printf ("Could not bind AF_UNIX (%s): %s.\n", un_addr.sun_path, strerror (errno));
 		api->fatal_error ("Could not bind to AF_UNIX socket\n");
 	}
 	listen (server_fd, SERVER_BACKLOG);

+ 6 - 3
lib/coroipcc.c

@@ -522,16 +522,16 @@ coroipcc_service_connect (
 
 	res_setup.error = CS_ERR_LIBRARY;
 
-	request_fd = socket (PF_UNIX, SOCK_STREAM, 0);
+	request_fd = socket (PF_LOCAL, SOCK_STREAM, 0);
 	if (request_fd == -1) {
 		return (CS_ERR_LIBRARY);
 	}
 
 	memset (&address, 0, sizeof (struct sockaddr_un));
+	address.sun_family = AF_UNIX;
 #if defined(COROSYNC_BSD) || defined(COROSYNC_DARWIN)
-	address.sun_len = sizeof(struct sockaddr_un);
+	address.sun_len = SUN_LEN(&address);
 #endif
-	address.sun_family = PF_UNIX;
 
 #if defined(COROSYNC_LINUX)
 	sprintf (address.sun_path + 1, "%s", socket_name);
@@ -541,6 +541,9 @@ coroipcc_service_connect (
 	sys_res = connect (request_fd, (struct sockaddr *)&address,
 		COROSYNC_SUN_LEN(&address));
 	if (sys_res == -1) {
+#ifdef DEBUG
+		fprintf(stderr, "Coroipcc: Can't connect: %d : %s\n", errno, strerror(errno));
+#endif
 		close (request_fd);
 		return (CS_ERR_TRY_AGAIN);
 	}