| Commit message (Collapse) | Author | Files | Lines |
|
|
|
After we've been hit by Large File Support problems several times in
the past week (which only occur on 32 bit platforms, which I don't
have), this is yet another attempt to fix the issue.
|
|
Drop the required GLib version from 2.16 to 2.12, because many current
systems still don't have GLib 2.16. This requires several new
compatibility functions in glib_compat.h.
|
|
Changed the wrappers for pipe(), socket(), accept(). On WIN32, this
does not work for pipe().
|
|
Added the "fd_util" library, which attempts to use the new thread-safe
Linux system calls pipe2(), accept4() and the options O_CLOEXEC,
SOCK_CLOEXEC. Without these, it falls back to FD_CLOEXEC, which is
not thread safe.
This is particularly important for the "pipe" output plugin (and
others, such as JACK/PulseAudio), because we were heavily leaking file
descriptors to child processes.
|
|
Don't call g_error(), which will abort the process and dump core.
|
|
Several users had problems with binding MPD to "localhost". The cause
was duplicate /etc/hosts entries: the resolver library returns
127.0.0.1 twice, and of course, MPD attempts to bind to "both" of
them. This patch makes failures non-fatal, given that at least one
address was bound successfully. This is a workaround; users should
rather fix their /etc/hosts file.
|
|
|
|
Dump each socket address before binding to it.
|
|
|
|
Moved code from listen_add_address() (listen.c) to socket_util.c.
|
|
This updates the copyright header to all be the same, which is
pretty much an update of where to mail request for a copy of the GPL
and the years of the MPD project. This also puts all committers under
'The Music Player Project' umbrella. These entries should go
individually in the AUTHORS file, for consistancy.
|
|
When the unix domain socket path is too long, don't abort with
g_error().
|
|
|
|
During the listen_add_host() API transition, the windows code wasn't
tested, and several removed arguments are still in use there.
|
|
The generic sockaddr struct is too small for some addresses. For
accept(), we have to allocate a sockaddr_storage struct on the stack,
which is large enough for all addresses.
|
|
Removed the sockaddr_to_tmp_string() hack, use
the new function sockaddr_to_string() instead.
|
|
Work around gcc warnings by casting the parameters to void.
|
|
Don't explicitly check is_ipv6_enabled(), just try calling
listen_add_port_ipv6(), but check its error code.
|
|
Some more code simplification.
|
|
For default bind_to_address settings, don't call
listen_add_config_param(NULL), use listen_add_port() directly.
|
|
Split code from the rather large function listen_add_config_param(),
part 3.
|
|
Split code from the rather large function listen_add_config_param(),
part 2.
|
|
Split code from the rather large function listen_add_config_param().
|
|
Don't return -1 on failure, and abort on fatal error - do proper error
reporting with GError, and return false on failure.
|
|
|
|
Renamed functions.
|
|
port number
|
|
All config_get_block_*() functions should accept constant config_param
pointers.
|
|
Simplify some code by using config_get_positive(), instead of doing
manual parsing and validation each time.
|
|
Renamed functions, types, variables.
|
|
|
|
The function ipv6Supported() is not used at all when IPv6 support was
disabled at compile time.
|
|
Free memory before exiting.
|
|
Make the listen socket an object, allowing us to add more fields
later. Convert listenSockets into a simple linked list.
|
|
|
|
|
|
WIN32 has no getaddrinfo(). Fall back to gethostbyname().
|
|
This is a rather huge patch, which unfortunately cannot be splitted.
Instead of using our custom ioops.h library, convert everything to use
the GLib main loop.
|
|
There is no point in making the server socket non-blocking. We call
accept() only after select() has notified us about a new connection.
|
|
On Windows, socket declarations reside in winsock.h and ws2tcpip.h.
The POSIX headers are not available.
|
|
redirect_stdin() is a daemonization function, and disconnecting from
the standard input is always a good idea for MPD.
|
|
Merged freeAllListenSockets() into closeAllListenSockets(), because
this is its only caller.
|
|
|
|
Only include headers which are really needed. os_compat.h aimed to
make MPD easily portable, but was never actually made portable.
|
|
Add a G_GNUC_UNUSED attribute.
|
|
AI_ADDRCONFIG is not available on all operating systems. Check if it
is defined in the current build environment.
|
|
The getaddrinfo() flag AI_PASSIVE should be used when resolving
addresses for the bind() system call.
|
|
The listen.c module breaks the build because the variable name used
("sun") for the Unix domain socket part collides with something else
on an OpenSolaris system, likely Sun specific. Renaming it to _sun
(or something else of choice) fixes the build.
[mk: renamed to "s_un"]
|
|
Depending on MPD's umask, the file permissions of the unix socket were
too restrictive, and many clients were not able to connect. Do a
chmod(0666) on the socket, to allow everybody to connect.
|