This way we get a nice error message in interactive mode when
para_audiod is down. Before:
para_audioc> help
i9e_line_handler: No such file or directory
After:
para_audioc> help
connect_audiod: could not connect /var/paraslash/audiod_socket.schubert
i9e_line_handler: No such file or directory
+static int connect_audiod(const char *sname, char *args)
+{
+ int fd = -1, ret;
+
+ ret = connect_local_socket(sname);
+ if (ret < 0)
+ goto fail;
+ fd = ret;
+ ret = send_cred_buffer(fd, args);
+ if (ret < 0)
+ goto fail;
+ return fd;
+fail:
+ PARA_ERROR_LOG("could not connect %s\n", sname);
+ if (fd >= 0)
+ close(fd);
+ return ret;
+}
+
#ifdef HAVE_READLINE
#include "list.h"
#include "sched.h"
#ifdef HAVE_READLINE
#include "list.h"
#include "sched.h"
args = concat_args(conf.inputs_num, conf.inputs);
free_argv(conf.inputs);
conf.inputs_num = 0; /* required for audioc_cmdline_parser_free() */
args = concat_args(conf.inputs_num, conf.inputs);
free_argv(conf.inputs);
conf.inputs_num = 0; /* required for audioc_cmdline_parser_free() */
- ret = connect_local_socket(socket_name);
+ ret = connect_audiod(socket_name, args);
if (ret < 0)
goto out;
at->fd = ret;
ret = mark_fd_nonblocking(at->fd);
if (ret < 0)
goto out;
at->fd = ret;
ret = mark_fd_nonblocking(at->fd);
- if (ret < 0)
- goto close;
- ret = send_cred_buffer(at->fd, args);
if (ret < 0)
goto close;
free(args);
if (ret < 0)
goto close;
free(args);
interactive_session();
args = concat_args(conf.inputs_num, conf.inputs);
interactive_session();
args = concat_args(conf.inputs_num, conf.inputs);
- ret = connect_local_socket(socket_name);
+ ret = connect_audiod(socket_name, args);
- if (ret < 0) {
- PARA_EMERG_LOG("failed to connect to local socket\n");
- ret = send_cred_buffer(fd, args);
+ ret = mark_fd_blocking(STDOUT_FILENO);
if (ret < 0)
goto out;
bufsize = conf.bufsize_arg;
buf = para_malloc(bufsize);
if (ret < 0)
goto out;
bufsize = conf.bufsize_arg;
buf = para_malloc(bufsize);
- ret = mark_fd_blocking(STDOUT_FILENO);
- if (ret < 0)
- goto out;
do {
size_t n = ret = recv_bin_buffer(fd, buf, bufsize);
if (ret <= 0)
do {
size_t n = ret = recv_bin_buffer(fd, buf, bufsize);
if (ret <= 0)