Unlike linux, OSX wakes up select with POLLOUT (instead of POLLERR) when
connect() is done async and the connection is refused. Therefore always check
for the socket error state using getsockopt (..., SO_ERROR, ...) after a
connection attempt.
When closing rtspsrc the state change blocks until the polling in the
connection timeouts. This is because the second time we loop to read a
full message controllable is set to FALSE in the poll group, even though no
message is half read.
This can be avoided by not setting controllable to FALSE the poll group
unless we had begin to read a message.
Fixes#610916
Remove the android/ top dir
Fixe the Makefile.am to be androgenized
To build gstreamer for android we are now using androgenizer which generates the
needed Android.mk files.
Androgenizer can be found here:
http://git.collabora.co.uk/?p=user/derek/androgenizer.git
Make sure to use the PKG_CONFIG_PATH set at configure time instead of
just relying on an env-var set one. This makes sure both g-ir-compiler
and g-ir-scanner use the same PKG_CONFIG_PATH for determining include
paths etc.
We want to send the keealive message a little earlier than the timeout value
specifies. Scale this based on the value of the timeout instead of just assuming
5 seconds.
Because we should act before the rtsp server does a timeout, we
reduce the timeout-time with 5 seconds, this should be safe to always
keep te rtsp connection alive.
https://bugzilla.gnome.org/show_bug.cgi?id=633455
Force regeneration of marshal.[ch] files after prefix changes in
Makefile.am, to avoid build errors for those of us who don't
habitually make clean first.
When calling gobject-introspection scanner, make sure our own
freshly-built libs within the source tree (well, build dir) come
first in the PKG_CONFIG_PATH. May or may not help to make sure
that it doesn't pick up older external plugins-base libs (or
.gir files) from outside the source tree / build directory as
dependencies of the introspected lib instead of using the
stuff we just built in a sibling directory.
https://bugzilla.gnome.org/show_bug.cgi?id=623698
Catch more socket errors.
Rework how sockets are managed in the GSource, wake up the maincontext instead
of adding/removing the sockets from the source.
Add callback for when the tunnel connection is lost. Some clients (Quicktime
Player) close the POST connection in tunneled mode and reopen the socket when
needed.
See #612915
Point g-ir-scanner to the .la file of our library, which hopefully
makes it find the right dependencies in all cases (ie. our locally
built libgstreamer and not the system-installed one). This is also
how it's done in Gtk+ and how it's documented in the wiki, see
http://live.gnome.org/GObjectIntrospection/AutotoolsIntegrationFixes#603710.
Use new girdir and typlibdir from core .pc files, so we can figure
out the right includes to pass to the gobject-introspection tools,
whether core is installed in the same prefix as gobject-introspection
or in a different prefix or uninstalled. This also keeps us from adding
bogus paths to the includes that only work if core is uninstalled.
Also add some missing includes/pkgs where needed.
Since we no longer use an array of error messages, there is no reason
to clamp the error code, which allows us to simplify the code some more
and also to actually report the correct error code for unknown errors.
2 goals in the refactoring:
- Put the error messages closer to their enum values, so that it's easy
to see which error belongs to which value.
- Make gcc not complain with -Wformat-nonliteral
Be careful when allocating the amount of bytes specified in the Content-Length
because it can be an insanely huge value. Try to allocate the memory but fail
gracefully with a nice error when the allocation failed.
Use send() instead of write() so that we can pass the MSG_NOSIGNAL flags to
avoid crashing with SIGPIPE when the remote end is not listening to us anymore.
Fixes#601772