aboutsummaryrefslogtreecommitdiffstats
path: root/src/socket_util.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2011-09-21Simplify setsockopt() casting workaroundDan McGee1-18/+4
On Win32, the third setsockopt parameter has type (char *) while on POSIX systems it is (void *). However, given that it is a no-op cast to go from a char pointer to a void pointer, we can cast to a char pointer (with a possible const modifier) on all platforms and satisfy the compiler. Signed-off-by: Dan McGee <dan@archlinux.org>
2011-09-20socket_util: move sockaddr_to_string() to resolver.cMax Kellermann1-50/+0
2011-09-20fd_util: add function close_socket()Max Kellermann1-3/+3
Wrap close(), use closesocket() on WIN32/WinSock.
2011-09-19Set socket TCP keepalive option on incoming connectionsDan McGee1-0/+15
If a connected host disappears without our knowledge, as can happen over wireless or a hibernating machine, we continue to hold the port open waiting for messages. Because we never try to send anything down this now-broken pipe, the connection will sit idle taking up a slot in our allowed incoming connections list. If enough of these happen, an unintended Denial of Service takes place, where all connection slots are filled with now-broken, never ending connections. Setting the TCP keepalive option at least allows these to time out after the default two hours, which is sufficient in the non-malicious case. Signed-off-by: Dan McGee <dan@archlinux.org>
2011-01-29copyright year 2011Max Kellermann1-1/+1
2010-05-18socket_util: fix setsockopt() argument type on WIN32Max Kellermann1-1/+7
In the winsock headers, the setsockopt() argument is declared as "const char *", not "const void *".
2010-03-21Define winnt or greater on mingw32 to take advantage of get*info().Avuton Olrich1-0/+1
2009-12-31Update copyright notices.Avuton Olrich1-1/+1
2009-11-12include config.h in all sourcesMax Kellermann1-1/+1
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.
2009-11-08fd_util: added O_NONBLOCK functionsMax Kellermann1-1/+1
Changed the wrappers for pipe(), socket(), accept(). On WIN32, this does not work for pipe().
2009-11-07set the close-on-exec flag on all file descriptorsMax Kellermann1-1/+2
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.
2009-04-01socket_util: fixed format warningMax Kellermann1-1/+1
g_set_error() is a printf-like function, and expects a format string. Using the return value of gai_strerror() is unsafe.
2009-03-16socket_util: use g_strerror() instead of strerror()Max Kellermann1-1/+1
g_strerror() is more portable, and guarantees that the returned string is UTF-8 encoded.
2009-03-14socket_util: added socket_bind_listen()Max Kellermann1-0/+61
Moved code from listen_add_address() (listen.c) to socket_util.c.
2009-03-13all: Update copyright header.Avuton Olrich1-3/+4
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.
2009-03-06socket_util: check if IN6_IS_ADDR_V4MAPPED is definedMax Kellermann1-2/+2
On some systems, the macro IN6_IS_ADDR_V4MAPPED() is not available. Don't try to convert IPv6 to their IPV4 equivalents in this case.
2009-03-01socket_util: include ws2tcpip.h for getnameinfo()Max Kellermann1-0/+4
Windows doesn't have the standard headers sys/socket.h and netdb.h.
2009-02-28socket_util: unpack V4MAPPED addressesMax Kellermann1-0/+20
Unpack IPv4 addresses which are packed inside an IPv6 address, i.e. return "127.0.0.1" rather than "::ffff:127.0.0.1".
2009-02-28socket_util: added function sockaddr_to_string()Max Kellermann1-19/+29
Create the socket_util.c library, the first function is sockaddr_to_string(): it converts a sockaddr struct to a string containing the IP address in a human-readable form.
2009-02-22encoder: added lame mp3 encoderMax Kellermann1-0/+4
This new LAME encoder plugin is based on the existing shout_mp3.c plugin.
2009-02-22encoder: added vorbis encoderMax Kellermann1-0/+5
This new vorbis encoder plugin is based on the existing shout_ogg.c plugin.
2009-02-22added the encoder APIMax Kellermann1-11/+16
The new generic encoder API will replace shout's custom encoder API.
2009-01-07pcm_prng: renamed prng() to pcm_prng()Max Kellermann1-1/+2
2009-01-03pcm_utils: use the custom PRNG for volume ditheringMax Kellermann1-11/+9
Don't use libc's rand() function, because it is slow. Our own trivial linear congruential generator is good enough for dithering.
2008-12-30listen: moved redirect_stdin() to daemon.cMax Kellermann1-0/+6
redirect_stdin() is a daemonization function, and disconnecting from the standard input is always a good idea for MPD.
2008-12-30main: moved daemonize() to daemon.cMax Kellermann1-12/+5
2008-12-27cmdline: use gboolean instead of intMax Kellermann1-4/+6
Prepare for the migration to the GLib option parser, which uses gboolean for flags.
2008-12-27moved command line parser to cmdline.cMax Kellermann1-7/+13
2008-10-31added prefix to header macrosMax Kellermann1-2/+2
"LOG_H" is a macro which is also used by ffmpeg/log.h. This is ffmpeg's fault, because short macros should be reserved for applications, but since it's always a good idea to choose prefixed macro names, even for applications, we are going to do that in MPD.
2008-10-08don't include os_compat.hMax Kellermann1-1/+1
When there are standardized headers, use these instead of the bloated os_compat.h.
2008-09-09output: moved code from audioOutput.c to output_control.cMax Kellermann1-19/+0
Similar to decoder_control.c, output_control.c will provide functions for controlling the output thread (which will be implemented later).
2008-09-09output: removed keepAudioOutputAlive() declarationMax Kellermann1-1/+0
This function is declared, but is neither used nor implemented.
2008-09-08output: static audio_output_plugin list as arrayMax Kellermann1-17/+0
Instead of having to register each output plugin, store them statically in an array. This eliminates the need for the List library here, and saves some small allocations during startup.
2008-09-07output: renamed typedef AudioOutput to struct audio_outputMax Kellermann1-21/+22
Also rename AudioOutputPlugin to struct audio_output_plugin, and use forward declarations to reduce include dependencies.
2008-09-07output: added output_api.hMax Kellermann1-64/+3
Just like decoder_api.h, output_api.h provides the audio output API which is used by the plugins.
2008-09-07audio_format: converted typedef AudioFormat to struct audio_formatMax Kellermann1-4/+4
Get rid of CamelCase, and don't use a typedef, so we can forward-declare it, and unclutter the include dependencies.
2008-08-29tag: renamed MpdTag and MpdTagItem to struct tag, struct mpd_tag_itemMax Kellermann1-2/+3
Getting rid of CamelCase; not having typedefs also allows us to forward-declare the structures.
2008-08-29pass constant pointersMax Kellermann1-2/+2
And again, convert arguments to const.
2008-08-26moved struct AudioFormat to audio_format.hMax Kellermann1-1/+1
We want to expose the AudioFormat structure to plugins; remove some clutter by moving its declaration to a separate header file.
2008-04-12const pointers in audioOutput.cMax Kellermann1-1/+2
git-svn-id: https://svn.musicpd.org/mpd/trunk@7345 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-04-12use size_t in audioOutput.c internalsMax Kellermann1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@7294 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-04-12use size_t and constant pointer in ao pluginsMax Kellermann1-2/+3
The audio output plugins should get a constant pointer, because they must not modify the buffer. Since the size is a non-negative buffer size in bytes, we should change its type to size_t. git-svn-id: https://svn.musicpd.org/mpd/trunk@7293 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-02-05fix -Wconst warningsMax Kellermann1-3/+3
[ew: cleaned up the dirty union hack a bit] Signed-off-by: Eric Wong <normalperson@yhbt.net> git-svn-id: https://svn.musicpd.org/mpd/trunk@7180 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-26fixed invalid C prototypesMax Kellermann1-1/+1
Signed-off-by: Eric Wong <normalperson@yhbt.net> git-svn-id: https://svn.musicpd.org/mpd/trunk@7142 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-03Cleanup #includes of standard system headers and put them in one placeEric Wong1-0/+1
This will make refactoring features easier, especially now that pthreads support and larger refactorings are on the horizon. Hopefully, this will make porting to other platforms (even non-UNIX-like ones for masochists) easier, too. os_compat.h will house all the #includes for system headers considered to be the "core" of MPD. Headers for optional features will be left to individual source files. git-svn-id: https://svn.musicpd.org/mpd/trunk@7130 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-06-13Adding FIFO audio output. This is pretty much identical to the old one,J. Alexander Treuman1-0/+1
except that it now uses a timer for throttling. git-svn-id: https://svn.musicpd.org/mpd/trunk@6621 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-06-12Load shout first instead of last. This makes it more likely to block otherJ. Alexander Treuman1-1/+1
outputs, which is actually desired behaviour. This way if the shout server takes a while to respond, the shout output can block until connected without messing up other audio outputs. git-svn-id: https://svn.musicpd.org/mpd/trunk@6554 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-06-10Load the shout plugin last. This will make sure it's played to last,J. Alexander Treuman1-1/+1
reducing the likelyhood of it blocking other outputs. git-svn-id: https://svn.musicpd.org/mpd/trunk@6543 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-05-30Adding a null output plugin.J. Alexander Treuman1-0/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@6393 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-05-24Reverting to the full lsr API. Turns out the simple API needs all of theJ. Alexander Treuman1-0/+2
audio at once, so it won't work for us. The old full API code was still heavily broken, as each call to pcm_convertSampleRate() used the same state, even if it was processing two streams of audio. The new code keeps a separate state for each audio stream that's being converted. git-svn-id: https://svn.musicpd.org/mpd/trunk@6255 09075e82-0dd4-0310-85a5-a0d7c8717e4f