{
int ret, socket_fd;
char *socket_name = conf.afs_socket_arg;
- struct sockaddr_un unix_addr;
unlink(socket_name);
- ret = create_local_socket(socket_name, &unix_addr,
+ ret = create_local_socket(socket_name,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IWOTH);
if (ret < 0) {
PARA_EMERG_LOG("%s: %s\n", para_strerror(-ret), socket_name);
/* does not unlink socket on errors */
static int audiod_get_socket(void)
{
- struct sockaddr_un unix_addr;
int ret, fd;
if (conf.socket_given)
PARA_NOTICE_LOG("local socket: %s\n", socket_name);
if (conf.force_given)
unlink(socket_name);
- ret = create_local_socket(socket_name, &unix_addr,
+ ret = create_local_socket(socket_name,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IWOTH);
if (ret < 0)
goto err;
* Prepare, create, and bind a socket for local communication.
*
* \param name The socket pathname.
- * \param unix_addr Pointer to the \p AF_UNIX socket structure.
- * \param mode The desired mode of the socket.
+ * \param mode The desired permissions of the socket.
*
* This function creates a local socket for sequenced, reliable,
* two-way, connection-based byte streams.
* \sa bind(2)
* \sa chmod(2)
*/
-int create_local_socket(const char *name, struct sockaddr_un *unix_addr,
- mode_t mode)
+int create_local_socket(const char *name, mode_t mode)
{
+ struct sockaddr_un unix_addr;
int fd, ret;
- ret = init_unix_addr(unix_addr, name);
+ ret = init_unix_addr(&unix_addr, name);
if (ret < 0)
return ret;
ret = socket(PF_UNIX, SOCK_STREAM, 0);
if (ret < 0)
return -ERRNO_TO_PARA_ERROR(errno);
fd = ret;
- ret = bind(fd, (struct sockaddr *) unix_addr, UNIX_PATH_MAX);
+ ret = bind(fd, (struct sockaddr *)&unix_addr, UNIX_PATH_MAX);
if (ret < 0) {
ret = -ERRNO_TO_PARA_ERROR(errno);
goto err;
int recv_buffer(int fd, char *buf, size_t size);
int para_accept(int fd, fd_set *rfds, void *addr, socklen_t size, int *new_fd);
-int create_local_socket(const char *name, struct sockaddr_un *unix_addr,
- mode_t mode);
+int create_local_socket(const char *name, mode_t mode);
int connect_local_socket(const char *name);
int recv_cred_buffer(int, char *, size_t);
ssize_t send_cred_buffer(int, char*);