mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
Add a wrapper around close() to work around Windows' ass backwards way of
handling sockets. git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1429 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
8bf7943e8e
commit
df47c7b828
7 changed files with 45 additions and 24 deletions
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
Copyright 2004-2006 Lennart Poettering
|
Copyright 2004-2006 Lennart Poettering
|
||||||
Copyright 2004 Joe Marcus Clarke
|
Copyright 2004 Joe Marcus Clarke
|
||||||
Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
||||||
|
|
||||||
PulseAudio is free software; you can redistribute it and/or modify
|
PulseAudio is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as
|
it under the terms of the GNU Lesser General Public License as
|
||||||
|
|
@ -348,6 +348,26 @@ ssize_t pa_loop_write(int fd, const void*data, size_t size, int *type) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Platform independent read function. Necessary since not all
|
||||||
|
* systems treat all file descriptors equal. */
|
||||||
|
int pa_close(int fd)
|
||||||
|
{
|
||||||
|
#ifdef OS_IS_WIN32
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = closesocket(fd);
|
||||||
|
if (ret == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (WSAGetLastError() != WSAENOTSOCK) {
|
||||||
|
errno = WSAGetLastError();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return close(fd);
|
||||||
|
}
|
||||||
|
|
||||||
/* Print a warning messages in case that the given signal is not
|
/* Print a warning messages in case that the given signal is not
|
||||||
* blocked or trapped */
|
* blocked or trapped */
|
||||||
void pa_check_signal_is_blocked(int sig) {
|
void pa_check_signal_is_blocked(int sig) {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
This file is part of PulseAudio.
|
This file is part of PulseAudio.
|
||||||
|
|
||||||
Copyright 2004-2006 Lennart Poettering
|
Copyright 2004-2006 Lennart Poettering
|
||||||
Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
||||||
|
|
||||||
PulseAudio is free software; you can redistribute it and/or modify
|
PulseAudio is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as
|
it under the terms of the GNU Lesser General Public License as
|
||||||
|
|
@ -44,6 +44,8 @@ ssize_t pa_write(int fd, const void *buf, size_t count, int *type);
|
||||||
ssize_t pa_loop_read(int fd, void*data, size_t size, int *type);
|
ssize_t pa_loop_read(int fd, void*data, size_t size, int *type);
|
||||||
ssize_t pa_loop_write(int fd, const void*data, size_t size, int *type);
|
ssize_t pa_loop_write(int fd, const void*data, size_t size, int *type);
|
||||||
|
|
||||||
|
int pa_close(int fd);
|
||||||
|
|
||||||
void pa_check_signal_is_blocked(int sig);
|
void pa_check_signal_is_blocked(int sig);
|
||||||
|
|
||||||
char *pa_sprintf_malloc(const char *format, ...) PA_GCC_PRINTF_ATTR(1,2);
|
char *pa_sprintf_malloc(const char *format, ...) PA_GCC_PRINTF_ATTR(1,2);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
This file is part of PulseAudio.
|
This file is part of PulseAudio.
|
||||||
|
|
||||||
Copyright 2004-2006 Lennart Poettering
|
Copyright 2004-2006 Lennart Poettering
|
||||||
Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
||||||
|
|
||||||
PulseAudio is free software; you can redistribute it and/or modify
|
PulseAudio is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as
|
it under the terms of the GNU Lesser General Public License as
|
||||||
|
|
@ -174,10 +174,9 @@ void pa_iochannel_free(pa_iochannel*io) {
|
||||||
|
|
||||||
if (!io->no_close) {
|
if (!io->no_close) {
|
||||||
if (io->ifd >= 0)
|
if (io->ifd >= 0)
|
||||||
|
pa_close(io->ifd);
|
||||||
close(io->ifd);
|
|
||||||
if (io->ofd >= 0 && io->ofd != io->ifd)
|
if (io->ofd >= 0 && io->ofd != io->ifd)
|
||||||
close(io->ofd);
|
pa_close(io->ofd);
|
||||||
}
|
}
|
||||||
|
|
||||||
pa_xfree(io);
|
pa_xfree(io);
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
/***
|
/***
|
||||||
This file is part of PulseAudio.
|
This file is part of PulseAudio.
|
||||||
|
|
||||||
Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
||||||
|
|
||||||
PulseAudio is free software; you can redistribute it and/or modify
|
PulseAudio is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as published
|
it under the terms of the GNU Lesser General Public License as published
|
||||||
|
|
@ -144,17 +144,17 @@ int pipe(int filedes[2]) {
|
||||||
if ((addr.sin_port != peer.sin_port) || (addr.sin_addr.s_addr != peer.sin_addr.s_addr))
|
if ((addr.sin_port != peer.sin_port) || (addr.sin_addr.s_addr != peer.sin_addr.s_addr))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
close(listener);
|
pa_close(listener);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
if (listener >= 0)
|
if (listener >= 0)
|
||||||
close(listener);
|
pa_close(listener);
|
||||||
if (filedes[0] >= 0)
|
if (filedes[0] >= 0)
|
||||||
close(filedes[0]);
|
pa_close(filedes[0]);
|
||||||
if (filedes[1] >= 0)
|
if (filedes[1] >= 0)
|
||||||
close(filedes[0]);
|
pa_close(filedes[0]);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
This file is part of PulseAudio.
|
This file is part of PulseAudio.
|
||||||
|
|
||||||
Copyright 2004-2006 Lennart Poettering
|
Copyright 2004-2006 Lennart Poettering
|
||||||
Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
||||||
|
|
||||||
PulseAudio is free software; you can redistribute it and/or modify
|
PulseAudio is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as
|
it under the terms of the GNU Lesser General Public License as
|
||||||
|
|
@ -163,7 +163,7 @@ static void do_call(pa_socket_client *c) {
|
||||||
|
|
||||||
finish:
|
finish:
|
||||||
if (!io && c->fd >= 0)
|
if (!io && c->fd >= 0)
|
||||||
close(c->fd);
|
pa_close(c->fd);
|
||||||
c->fd = -1;
|
c->fd = -1;
|
||||||
|
|
||||||
free_events(c);
|
free_events(c);
|
||||||
|
|
@ -310,7 +310,7 @@ static void socket_client_free(pa_socket_client *c) {
|
||||||
free_events(c);
|
free_events(c);
|
||||||
|
|
||||||
if (c->fd >= 0)
|
if (c->fd >= 0)
|
||||||
close(c->fd);
|
pa_close(c->fd);
|
||||||
|
|
||||||
#ifdef HAVE_LIBASYNCNS
|
#ifdef HAVE_LIBASYNCNS
|
||||||
if (c->asyncns_query)
|
if (c->asyncns_query)
|
||||||
|
|
@ -403,7 +403,7 @@ static void timeout_cb(pa_mainloop_api *m, pa_time_event *e, const struct timeva
|
||||||
assert(c);
|
assert(c);
|
||||||
|
|
||||||
if (c->fd >= 0) {
|
if (c->fd >= 0) {
|
||||||
close(c->fd);
|
pa_close(c->fd);
|
||||||
c->fd = -1;
|
c->fd = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
This file is part of PulseAudio.
|
This file is part of PulseAudio.
|
||||||
|
|
||||||
Copyright 2004-2006 Lennart Poettering
|
Copyright 2004-2006 Lennart Poettering
|
||||||
Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
||||||
|
|
||||||
PulseAudio is free software; you can redistribute it and/or modify
|
PulseAudio is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as published
|
it under the terms of the GNU Lesser General Public License as published
|
||||||
|
|
@ -106,7 +106,7 @@ static void callback(pa_mainloop_api *mainloop, pa_io_event *e, int fd, PA_GCC_U
|
||||||
pa_fd_set_cloexec(nfd, 1);
|
pa_fd_set_cloexec(nfd, 1);
|
||||||
|
|
||||||
if (!s->on_connection) {
|
if (!s->on_connection) {
|
||||||
close(nfd);
|
pa_close(nfd);
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -119,7 +119,7 @@ static void callback(pa_mainloop_api *mainloop, pa_io_event *e, int fd, PA_GCC_U
|
||||||
fromhost(&req);
|
fromhost(&req);
|
||||||
if (!hosts_access(&req)) {
|
if (!hosts_access(&req)) {
|
||||||
pa_log_warn("TCP connection refused by tcpwrap.");
|
pa_log_warn("TCP connection refused by tcpwrap.");
|
||||||
close(nfd);
|
pa_close(nfd);
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -216,7 +216,7 @@ pa_socket_server* pa_socket_server_new_unix(pa_mainloop_api *m, const char *file
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
close(fd);
|
pa_close(fd);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -275,7 +275,7 @@ pa_socket_server* pa_socket_server_new_ipv4(pa_mainloop_api *m, uint32_t address
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
close(fd);
|
pa_close(fd);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -331,7 +331,7 @@ pa_socket_server* pa_socket_server_new_ipv6(pa_mainloop_api *m, const uint8_t ad
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
close(fd);
|
pa_close(fd);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -398,7 +398,7 @@ static void socket_server_free(pa_socket_server*s) {
|
||||||
pa_xfree(s->filename);
|
pa_xfree(s->filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
close(s->fd);
|
pa_close(s->fd);
|
||||||
|
|
||||||
pa_xfree(s->tcpwrap_service);
|
pa_xfree(s->tcpwrap_service);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
Copyright 2004-2006 Lennart Poettering
|
Copyright 2004-2006 Lennart Poettering
|
||||||
Copyright 2004 Joe Marcus Clarke
|
Copyright 2004 Joe Marcus Clarke
|
||||||
Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
||||||
|
|
||||||
PulseAudio is free software; you can redistribute it and/or modify
|
PulseAudio is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as published
|
it under the terms of the GNU Lesser General Public License as published
|
||||||
|
|
@ -236,7 +236,7 @@ int pa_unix_socket_is_stale(const char *fn) {
|
||||||
|
|
||||||
finish:
|
finish:
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
close(fd);
|
pa_close(fd);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue