Applied patch from larsl to drop file desctiptors on server launch.

Applied Debian patch to fix memory errors on 64-bit archs (supposedly..).
Applied Debian patch to kill /etc/services requirement.
Fixed server auto launch to work without /etc/services (debian patch broke it).


git-svn-id: svn://svn.savannah.nongnu.org/lash/trunk@42 1de19dc7-4e3f-0410-a61d-eddf686bf0b7
This commit is contained in:
Dave Robillard 2006-09-16 20:39:39 +00:00
parent 99b63e0915
commit ee35dd9708
15 changed files with 24 additions and 54 deletions

View File

@ -176,31 +176,6 @@ else
AC_MSG_RESULT([no])
fi
###########################
### --disable-serv-inst ###
###########################
AC_MSG_CHECKING([whether to install service in /etc/services])
lash_serv_inst="yes"
AC_ARG_ENABLE(serv-inst,
[AS_HELP_STRING(--disable-serv-inst, disable installation of lash service in /etc/services)],[
case "$enableval" in
"yes")
;;
"no")
lash_serv_inst="no"
;;
*)
AC_MSG_ERROR([must use --enable-serv-inst(=yes/no) or --disable-serv-inst])
;;
esac
])
AM_CONDITIONAL(SERVICE_INSTALL, test x$lash_serv_inst = xyes)
if test x$lash_serv_inst = xyes; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
##########################
### --with-default-dir ###

View File

@ -198,13 +198,6 @@ for developers working on the LASH code itself.
to \$HOME under which the server will create new project directories.
Without this option, the value defaults to @file{audio-projects}.
@item --disable-serv-inst The LASH server and library look up port
addresses for the LASH service using standard system calls that
refer to the @file{/etc/services} database. If @file{/etc/services}
does not contain a valid entry, an error will result. By default, the
installation routine will install a service entry if one does not exist.
This flag disables that action.
@end table
@subsection Building

View File

@ -7,5 +7,6 @@ Name: LASH
Description: Audio session management
Requires: jack alsa
Version: @PACKAGE_VERSION@
Libs: -Wl,--rpath -Wl,${libdir} -L${libdir} -llash -lpthread -luuid
Libs: -llash
Libs.static: -lpthread -luuid
Cflags: -I${includedir}/lash-1.0

View File

@ -50,7 +50,7 @@ void lash_args_set_port (lash_args_t * args, int port);
void lash_args_set_id (lash_args_t * args, uuid_t id);
void lash_args_set_flags (lash_args_t * args, int flags);
void lash_args_set_flag (lash_args_t * args, int flag);
void lash_args_set_args (lash_args_t * args, int argc, const char * const * argv);
void lash_args_set_args (lash_args_t * args, int argc, const char *const * argv);
const char * lash_args_get_project (const lash_args_t * args);
const char * lash_args_get_server (const lash_args_t * args);

View File

@ -30,7 +30,7 @@
struct _lash_client
{
lash_args_t *args;
lash_args_t *args;
char *class;
short server_connected;

View File

@ -27,6 +27,8 @@
# include <lash/lash.h>
#define LASH_PORT "14541"
# ifdef __cplusplus
extern "C" {
# endif

View File

@ -46,10 +46,3 @@ dtd_DATA = lash-project-1.0.dtd
EXTRA_DIST = $(dtd_DATA)
if SERVICE_INSTALL
install-data-local:
if ! grep -q ^lash /etc/services; then \
echo -e "\nlash\t\t14541/tcp\t\t\t# LASH client/server protocol" >> /etc/services; \
fi
endif

View File

@ -185,7 +185,7 @@ conn_mgr_start(conn_mgr_t * conn_mgr)
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE;
err = getaddrinfo(NULL, "lash", &hints, &addrs);
err = getaddrinfo(NULL, LASH_PORT, &hints, &addrs);
if (err) {
fprintf(stderr, "%s: could not look up service name: %s\n",
__FUNCTION__, gai_strerror(err));

View File

@ -81,7 +81,7 @@ lash_args_duplicate(const lash_args_t *const src)
result->flags = src->flags;
result->argc = 0;
result->argv = NULL;
if (result->argc > 0 && result->argv)
if (src->argc > 0 && src->argv)
lash_args_set_args(result, src->argc, src->argv);
return result;
@ -150,7 +150,7 @@ lash_args_get_flags(const lash_args_t * args)
}
void
lash_args_set_args(lash_args_t * args, int argc, const char *const *argv)
lash_args_set_args(lash_args_t * args, int argc, const char *const * argv)
{
int i;

View File

@ -20,7 +20,7 @@
#include <lash/types.h>
#include <lash/client.h>
#include <lash/xmalloc.h>
#include <lash/list.h>
#include <lash/internal.h>
lash_client_t *

View File

@ -135,7 +135,7 @@ lash_comm_connect_to_server(lash_client_t * client, const char *server,
lash_comm_event_t connect_event;
int err;
err = lash_open_socket(&client->socket, server, "lash");
err = lash_open_socket(&client->socket, server, service);
if (err) {
fprintf(stderr, "%s: could not create server connection\n",
__FUNCTION__);

View File

@ -22,7 +22,7 @@
#include <stdio.h>
#include <lash/config.h>
#include <lash/xmalloc.h>
#include <lash/list.h>
#include <lash/internal.h>
void

View File

@ -22,7 +22,7 @@
#include <lash/types.h>
#include <lash/internal.h>
#include <lash/xmalloc.h>
#include <lash/list.h>
#include <lash/event.h>
lash_event_t *

View File

@ -125,7 +125,7 @@ lash_extract_args(int *argc, char ***argv)
*argc = valid_count;
lash_args_set_args(args, *argc, (const char *const *)*argv);
lash_args_set_args(args, *argc, *argv);
return args;
}
@ -179,7 +179,7 @@ lash_init(const lash_args_t * args,
cstr = lash_args_get_server(args);
err = lash_comm_connect_to_server(client,
cstr ? cstr : "localhost",
"lash", connect_params);
LASH_PORT, connect_params);
/* couldn't connect, try to start a new server */
/* but not if this client has been started by a server, in which
@ -196,6 +196,13 @@ lash_init(const lash_args_t * args,
/* child process will run this statement */
if (err == 0) {
/* need to close all open file descriptors except the std ones */
int max_fds = getdtablesize();
int fd;
for (fd = 3; fd < max_fds; ++fd)
close(fd);
switch (fork()) {
/* grandchild process will run this block */
@ -221,7 +228,7 @@ lash_init(const lash_args_t * args,
sleep(1);
err = lash_comm_connect_to_server(client,
cstr ? cstr : "localhost",
"lash", connect_params);
LASH_PORT, connect_params);
if (err == 0) {
LASH_PRINT_DEBUG("successfully launched and connected to lashd");
break;

View File

@ -33,8 +33,7 @@ extern int h_errno;
#include <arpa/inet.h>
#include <unistd.h>
#include <ctype.h>
#include <lash/xmalloc.h>
#include <lash/list.h>
#include <lash/debug.h>
int