platform/upstream/gstreamer.git
11 years agomedia-factory: add convenience API for factory
Wim Taymans [Fri, 12 Jul 2013 14:17:57 +0000 (16:17 +0200)]
media-factory: add convenience API for factory

11 years agopermissions: simplify API a little
Wim Taymans [Fri, 12 Jul 2013 14:03:07 +0000 (16:03 +0200)]
permissions: simplify API a little

Avoid passing GstStructure in the add_role method, use varargs instead
to construct the structure behind the scenes. We can then also use the
structure name as the role and simplify some more logic.

11 years agoauth: fix typo
Wim Taymans [Fri, 12 Jul 2013 14:01:14 +0000 (16:01 +0200)]
auth: fix typo

11 years agoauth: handle unauthorized response
Wim Taymans [Fri, 12 Jul 2013 13:19:29 +0000 (15:19 +0200)]
auth: handle unauthorized response

Move handling of the unauthorized response to the auth module, it can add
the appropriate headers to request authorization for the required method
much better than the client.

11 years agoclient: allow for sending any message, not only requests
Wim Taymans [Fri, 12 Jul 2013 13:13:48 +0000 (15:13 +0200)]
client: allow for sending any message, not only requests

Change the _send_request() method to _send_message() so that we
can both send requests and replies.

11 years agodocs: fix docs
Wim Taymans [Fri, 12 Jul 2013 12:10:13 +0000 (14:10 +0200)]
docs: fix docs

11 years agoauth: move TLS handling to auth module
Wim Taymans [Fri, 12 Jul 2013 10:41:52 +0000 (12:41 +0200)]
auth: move TLS handling to auth module

Remove the TLS settings on the server and move it to the auth module because
that is where security related bits go.

11 years agoclient: add state push/pop
Wim Taymans [Fri, 12 Jul 2013 10:38:54 +0000 (12:38 +0200)]
client: add state push/pop

11 years agoclient: add connection to state
Wim Taymans [Fri, 12 Jul 2013 10:36:40 +0000 (12:36 +0200)]
client: add connection to state

11 years agomount-points: fix debug
Wim Taymans [Thu, 11 Jul 2013 18:45:11 +0000 (20:45 +0200)]
mount-points: fix debug

11 years agotests: fix media test
Wim Taymans [Thu, 11 Jul 2013 15:28:17 +0000 (17:28 +0200)]
tests: fix media test

11 years agothread-pool: we don't require a state
Wim Taymans [Thu, 11 Jul 2013 15:28:04 +0000 (17:28 +0200)]
thread-pool: we don't require a state

11 years agoserver: let context ref the server
Wim Taymans [Thu, 11 Jul 2013 15:18:58 +0000 (17:18 +0200)]
server: let context ref the server

So that we don't risk losing the server object early anc crash.

11 years agotests: fix client test
Wim Taymans [Thu, 11 Jul 2013 15:05:00 +0000 (17:05 +0200)]
tests: fix client test

11 years agodocs: improve docs
Wim Taymans [Thu, 11 Jul 2013 14:57:14 +0000 (16:57 +0200)]
docs: improve docs

11 years agosession-pool: make vmethod to create a session
Wim Taymans [Thu, 11 Jul 2013 14:28:09 +0000 (16:28 +0200)]
session-pool: make vmethod to create a session

Make a vmethod to create a sessions so that subclasses can create
custom session objects

11 years agodocs: more updates
Wim Taymans [Thu, 11 Jul 2013 10:24:33 +0000 (12:24 +0200)]
docs: more updates

11 years agodocs: update docs
Wim Taymans [Thu, 11 Jul 2013 10:18:26 +0000 (12:18 +0200)]
docs: update docs

11 years agoconfigure: compile cgroup example conditionally
Wim Taymans [Thu, 11 Jul 2013 08:28:06 +0000 (10:28 +0200)]
configure: compile cgroup example conditionally

Only compile the cgroup example when we have libcgroup

11 years agoexamples: add cgroups example
Wim Taymans [Wed, 10 Jul 2013 18:57:12 +0000 (20:57 +0200)]
examples: add cgroups example

11 years agotests: fix compilation
Wim Taymans [Wed, 10 Jul 2013 18:55:03 +0000 (20:55 +0200)]
tests: fix compilation

11 years agothread-pool: fix vmethod invocation
Wim Taymans [Wed, 10 Jul 2013 18:48:47 +0000 (20:48 +0200)]
thread-pool: fix vmethod invocation

11 years agothread-pool: store thread type in thread
Wim Taymans [Wed, 10 Jul 2013 18:48:18 +0000 (20:48 +0200)]
thread-pool: store thread type in thread

11 years agoclient: pass thread from pool to media _prepare
Wim Taymans [Wed, 10 Jul 2013 15:09:27 +0000 (17:09 +0200)]
client: pass thread from pool to media _prepare

Get a thread from the configured threadpool and pass it to the prepare method of
the media.

11 years agomedia: Accept a thread in _prepare
Wim Taymans [Wed, 10 Jul 2013 15:08:14 +0000 (17:08 +0200)]
media: Accept a thread in _prepare

Remove out own threadpool handling and use the provided thread and
maincontext for the bus messages and the state changes.

11 years agoserver: configure client thread pool
Wim Taymans [Wed, 10 Jul 2013 15:07:13 +0000 (17:07 +0200)]
server: configure client thread pool

11 years agoclient: add method to configure thread pool
Wim Taymans [Wed, 10 Jul 2013 15:06:36 +0000 (17:06 +0200)]
client: add method to configure thread pool

11 years agoserver: use thread pool
Wim Taymans [Wed, 10 Jul 2013 14:49:55 +0000 (16:49 +0200)]
server: use thread pool

Use the thread pool instead of doing our own thing.

11 years agothread-pool: add object to manage threads
Wim Taymans [Wed, 10 Jul 2013 14:47:43 +0000 (16:47 +0200)]
thread-pool: add object to manage threads

Add an object to manage the client and media threads.

11 years agoauth: debug authorization check
Wim Taymans [Wed, 10 Jul 2013 13:28:35 +0000 (15:28 +0200)]
auth: debug authorization check

11 years agomedia: start media pipeline in context
Wim Taymans [Tue, 9 Jul 2013 18:44:51 +0000 (20:44 +0200)]
media: start media pipeline in context

Start the media pipeline in the provided context (or our default one
when NULL). This makes sure that we run the bus thread in this context and that
all media threads are children of this context.

11 years agofactory: pass permissions to media by default
Wim Taymans [Tue, 9 Jul 2013 14:38:39 +0000 (16:38 +0200)]
factory: pass permissions to media by default

11 years agotest: add permissions to auth test
Wim Taymans [Tue, 9 Jul 2013 14:09:07 +0000 (16:09 +0200)]
test: add permissions to auth test

Ass some permissions to the media factory in the test.

11 years agoauth: simplify auth checks
Wim Taymans [Tue, 9 Jul 2013 14:04:35 +0000 (16:04 +0200)]
auth: simplify auth checks

Remove client from methods, it's now in the state
Perform the check specified by the string, use the information from the
thread local context.

11 years agoclient: add state to current thread
Wim Taymans [Tue, 9 Jul 2013 14:01:29 +0000 (16:01 +0200)]
client: add state to current thread

Add the client to the ClientState object.
Place the ClientState on the current thread.

11 years agomedia: make it possible to set permissions
Wim Taymans [Tue, 9 Jul 2013 12:33:43 +0000 (14:33 +0200)]
media: make it possible to set permissions

Make it possible to set permissions on media and media factory objects

11 years agopermissions: add permissions object
Wim Taymans [Tue, 9 Jul 2013 12:31:15 +0000 (14:31 +0200)]
permissions: add permissions object

Add a mini object to store permissions based on a role.

11 years agoauth: add auth checks
Wim Taymans [Mon, 8 Jul 2013 14:29:01 +0000 (16:29 +0200)]
auth: add auth checks

Add an enum with auth checks and implement the checks in the auth object.
Perform the checks from the client.

11 years agoauth: use the token after authentication
Wim Taymans [Fri, 5 Jul 2013 18:48:18 +0000 (20:48 +0200)]
auth: use the token after authentication

After we authenticated a user, keep the Token around in the state.

11 years agomedia: add optional context for bus messages
Wim Taymans [Fri, 5 Jul 2013 18:43:39 +0000 (20:43 +0200)]
media: add optional context for bus messages

Add an optional mainloop to _prepare that will handle the bus messages instead
of always using the shared mainloop.

11 years agotoken: add authorization token
Wim Taymans [Fri, 5 Jul 2013 18:34:40 +0000 (20:34 +0200)]
token: add authorization token

Add a simply miniobject that contains the authorizations. The object contains a
GstStructure that hold all authorization fields. When a user is authenticated,
the auth module will create a Token for the user. The token is then used to
check what operations the user is allowed to do and various other configuration
values.

11 years agoauth: remove auth from media and factory
Wim Taymans [Fri, 5 Jul 2013 10:08:36 +0000 (12:08 +0200)]
auth: remove auth from media and factory

Remove the auth object from media and factory. We want to have the RTSPClient
authenticate and authorize resources, there is no need to place another auth
manager on the media/factory.

11 years agoauth: add support for multiple basic auth tokens
Wim Taymans [Thu, 4 Jul 2013 12:33:59 +0000 (14:33 +0200)]
auth: add support for multiple basic auth tokens

Make it possible to add multiple basic authorisation tokens to one authorization
object. Associate with each token an authorization group that will define what
capabilities are allowed.

11 years agoclient: error out on non-aggregate control
Wim Taymans [Wed, 3 Jul 2013 14:15:04 +0000 (16:15 +0200)]
client: error out on non-aggregate control

We require aggregate control (for now) for PLAY, PAUSE and TEARDOWN.

11 years agoclient: rework setup request a little
Wim Taymans [Wed, 3 Jul 2013 13:55:38 +0000 (15:55 +0200)]
client: rework setup request a little

Cache the media in DESCRIBE based on the longest matching path with the uri
that we can find in the mount points.

Rework the setup request a little to get the media from the session or from
the longest matching path, this way we can derive the control string as
everything after the path instead of hardcoding it.

Find the stream based on the control string and only open a session when all
this can be done.

11 years agomedia: add method to find a stream by control url
Wim Taymans [Wed, 3 Jul 2013 13:14:39 +0000 (15:14 +0200)]
media: add method to find a stream by control url

11 years agostream: add method to check control url of stream
Wim Taymans [Wed, 3 Jul 2013 13:13:45 +0000 (15:13 +0200)]
stream: add method to check control url of stream

11 years agosession: use path matching for session media
Wim Taymans [Wed, 3 Jul 2013 10:37:48 +0000 (12:37 +0200)]
session: use path matching for session media

Use a path string instead of a uri to lookup session media in the sessions. Also
use path matching to find the largest possible path that matches.

11 years agomount-points: remove useless vmethod
Wim Taymans [Wed, 3 Jul 2013 09:04:53 +0000 (11:04 +0200)]
mount-points: remove useless vmethod

Making lookups in the mount points should not be done with a URL, if there is a
mapping to be done from URL to mount points, we'll need to do it somewhere
else.

11 years agomount-points: improve mount point searching
Wim Taymans [Wed, 3 Jul 2013 08:25:46 +0000 (10:25 +0200)]
mount-points: improve mount point searching

Use a GSequence to keep track of the mount points.
Match a URL to the longest matching registered mount point. This should be the
URL to perform aggreagate control and the remainder is the stream specific
control part.
Add some unit tests for this.

11 years agortsp-server: Allow building of static library
Sebastian Dröge [Wed, 3 Jul 2013 08:40:33 +0000 (10:40 +0200)]
rtsp-server: Allow building of static library

11 years agotests: fix compilation
Wim Taymans [Tue, 2 Jul 2013 13:59:16 +0000 (15:59 +0200)]
tests: fix compilation

11 years agosdp: get control string from stream
Wim Taymans [Tue, 2 Jul 2013 13:54:43 +0000 (15:54 +0200)]
sdp: get control string from stream

Use the control string as configured in the stream.

11 years agostream: add methods and property to set control string
Wim Taymans [Tue, 2 Jul 2013 12:44:35 +0000 (14:44 +0200)]
stream: add methods and property to set control string

11 years agoclient: cleanups
Wim Taymans [Tue, 2 Jul 2013 09:58:02 +0000 (11:58 +0200)]
client: cleanups

Rename variables for clarity
Keep media in state when we can

11 years agostream: add more support for IPv6
Wim Taymans [Mon, 1 Jul 2013 14:46:07 +0000 (16:46 +0200)]
stream: add more support for IPv6

Rename _get_address to _get_multicast_address in GstRTSPStream to
make it clear that this function only deals with multicast.
Make it possible to have both an IPv4 and IPv6 multicast address on
a stream. Give the client an IPv4 or IPv6 address depending on the
address it used to connect to the server.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702002

11 years agoclient: fix comment
Wim Taymans [Mon, 1 Jul 2013 13:18:43 +0000 (15:18 +0200)]
client: fix comment

11 years agostream: handle failed port allocation
Wim Taymans [Mon, 1 Jul 2013 12:45:49 +0000 (14:45 +0200)]
stream: handle failed port allocation

Allow for ipv4 or ipv6 socket allocations to fail. Only report failure if we
can't allocate any family at all. Also keep track of what port families we
allocated.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703175

11 years agostream: improve docs
Wim Taymans [Mon, 1 Jul 2013 10:20:50 +0000 (12:20 +0200)]
stream: improve docs

11 years agostream-transport: remove old if 0 block
Wim Taymans [Mon, 1 Jul 2013 10:04:45 +0000 (12:04 +0200)]
stream-transport: remove old if 0 block

11 years agotests: fix tests
Patricia Muscalu [Thu, 27 Jun 2013 09:21:42 +0000 (11:21 +0200)]
tests: fix tests

gst_rtsp_client_get_uri() has been removed

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703173

11 years agoclient: add method to filter managed sessions
Wim Taymans [Wed, 26 Jun 2013 15:18:33 +0000 (17:18 +0200)]
client: add method to filter managed sessions

Add a method to filter the sessions managed by this client connection.

See https://bugzilla.gnome.org/show_bug.cgi?id=703016

11 years agoclient: remove _get_uri() method
Wim Taymans [Wed, 26 Jun 2013 14:32:06 +0000 (16:32 +0200)]
client: remove _get_uri() method

Remove the get_uri() method on the client. A client has no uri, the uri
property is an internal property to manage the last cached media for
the client.

11 years agomedia-factory: fix typo
Wim Taymans [Wed, 26 Jun 2013 14:31:39 +0000 (16:31 +0200)]
media-factory: fix typo

11 years agortsp-media: Do not leak the query in default_query_stop
Ognyan Tonchev [Wed, 26 Jun 2013 12:42:15 +0000 (14:42 +0200)]
rtsp-media: Do not leak the query in default_query_stop

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703120

11 years agomedia: don't unlock when conversion fails
Wim Taymans [Tue, 25 Jun 2013 13:46:41 +0000 (15:46 +0200)]
media: don't unlock when conversion fails

Don't unlock the state lock when conversion fails because it was not locked.

11 years agoAdd query_position and query_stop vmethods to rtsp-media
Youness Alaoui [Mon, 10 Jun 2013 21:32:40 +0000 (17:32 -0400)]
Add query_position and query_stop vmethods to rtsp-media

11 years agoFix typo in property install for rtsp-media's time-provider
Youness Alaoui [Mon, 10 Jun 2013 21:33:01 +0000 (17:33 -0400)]
Fix typo in property install for rtsp-media's time-provider

11 years agoclient: clean some variables
Wim Taymans [Tue, 25 Jun 2013 13:09:13 +0000 (15:09 +0200)]
client: clean some variables

Clean some variables and add some guards to _send_request()

11 years agoAdd gst_rtsp_client_send_request API
Youness Alaoui [Mon, 10 Jun 2013 21:32:12 +0000 (17:32 -0400)]
Add gst_rtsp_client_send_request API

This makes it possible to send arbitrary messages to a client, such as
SET_PARAMETER or GET_PARAMETER

11 years agomedia: add _get_element() method
Wim Taymans [Mon, 24 Jun 2013 21:56:57 +0000 (23:56 +0200)]
media: add _get_element() method

Add method to get the element used when creating the media.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703008

11 years agomedia: fix docs
Wim Taymans [Mon, 24 Jun 2013 21:51:38 +0000 (23:51 +0200)]
media: fix docs

11 years agostream: allow access to the rtp session
Aleix Conchillo Flaque [Mon, 24 Jun 2013 18:41:27 +0000 (11:41 -0700)]
stream: allow access to the rtp session

  https://bugzilla.gnome.org/show_bug.cgi?id=703004

11 years agodscp qos support in gst-rtsp-stream
Alexander Schrab [Mon, 24 Jun 2013 08:43:59 +0000 (10:43 +0200)]
dscp qos support in gst-rtsp-stream

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702645

11 years agotests: fix test
Wim Taymans [Thu, 20 Jun 2013 15:30:49 +0000 (17:30 +0200)]
tests: fix test

Actually do what the comment says. Also keep the old code around, not sure what
should happen when you get a 454 from a TEARDOWN, does it close the connection?
it currently doesn't.

11 years agoclient: also watch newly created session
Wim Taymans [Thu, 20 Jun 2013 10:20:21 +0000 (12:20 +0200)]
client: also watch newly created session

When we newly created a session, start watching it immediately instead of
on the next request.

11 years agotests: add unit test for new-session
Patricia Muscalu [Thu, 20 Jun 2013 10:18:23 +0000 (12:18 +0200)]
tests: add unit test for new-session

See https://bugzilla.gnome.org/show_bug.cgi?id=701587

11 years agoclient: emit new-session when new session is created
Wim Taymans [Thu, 20 Jun 2013 10:16:07 +0000 (12:16 +0200)]
client: emit new-session when new session is created

Only emit new-session when we created a new session for a client, not when a
client picked up a previous session.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701587

11 years agoclient: handle asterisk as path in requests
Alexander Schrab [Thu, 20 Jun 2013 09:17:29 +0000 (11:17 +0200)]
client: handle asterisk as path in requests

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701266

11 years agomedia: handle segment query format mismatch
Wim Taymans [Thu, 20 Jun 2013 09:14:31 +0000 (11:14 +0200)]
media: handle segment query format mismatch

It's possible that the segment query returns with a different format than what
we asked for, handle this case also.

11 years agomedia: use segment stop in collect_media_stats
David Svensson Fors [Tue, 11 Jun 2013 13:28:32 +0000 (15:28 +0200)]
media: use segment stop in collect_media_stats

Use segment stop instead of duration as range end point.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701185

11 years agortsp-media: Do not leak the element in take_pipeline
Ognyan Tonchev [Mon, 17 Jun 2013 14:47:56 +0000 (16:47 +0200)]
rtsp-media: Do not leak the element in take_pipeline

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702470

11 years agortsp-client: Make configure_client_transport virtual
Ognyan Tonchev [Mon, 17 Jun 2013 14:18:37 +0000 (16:18 +0200)]
rtsp-client: Make configure_client_transport virtual

This patch makes configure_client_transport virtual. The functionality is
needed to handle some weird clients sending multicast transport settings as url
options.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702173

11 years agortsp-client: Make param_set and param_get virtual
Ognyan Tonchev [Wed, 12 Jun 2013 10:23:56 +0000 (12:23 +0200)]
rtsp-client: Make param_set and param_get virtual

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702072

11 years agomedia: convert_range replaces get_range_times
David Svensson Fors [Wed, 5 Jun 2013 13:49:45 +0000 (15:49 +0200)]
media: convert_range replaces get_range_times

get_range_times worked for handling UTC ranges for seeks, but we also
need to convert back from NPT to the requested unit in
get_range_string. convert_range is now used for both.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702084

11 years agosdp: cleanup sdp info
Wim Taymans [Fri, 14 Jun 2013 14:05:59 +0000 (16:05 +0200)]
sdp: cleanup sdp info

We don't need to pass the proto, we can more easily check a boolean.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702063

11 years agouse 0.0.0.0 or :: for c= line instead of server address
Alexander Schrab [Wed, 12 Jun 2013 13:22:57 +0000 (15:22 +0200)]
use 0.0.0.0 or :: for c= line instead of server address

11 years agouse local address, not remote, in SDP
Alexander Schrab [Wed, 12 Jun 2013 08:56:16 +0000 (10:56 +0200)]
use local address, not remote, in SDP

See https://bugzilla.gnome.org/show_bug.cgi?id=702063

11 years agoAutomatic update of common submodule
Sebastian Dröge [Wed, 5 Jun 2013 13:18:26 +0000 (15:18 +0200)]
Automatic update of common submodule

From 098c0d7 to 01a7a46

11 years agomedia: possibility to override range time conversion
David Svensson Fors [Wed, 29 May 2013 11:45:00 +0000 (13:45 +0200)]
media: possibility to override range time conversion

Make it possible to override the conversion from GstRTSPTimeRange to
GstClockTimes, that is done before seeking on the media
pipeline. Overriding can be useful for UTC ranges, where the default
conversion gives nanoseconds since 1900.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701191

11 years agortsp-server: Expose the use_client_settings API
Ognyan Tonchev [Mon, 3 Jun 2013 10:04:44 +0000 (12:04 +0200)]
rtsp-server: Expose the use_client_settings API

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=699935

11 years agortspstream: handle both ipv4 and ipv6 clients
Alexander Schrab [Thu, 30 May 2013 06:07:48 +0000 (08:07 +0200)]
rtspstream: handle both ipv4 and ipv6 clients

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701129

11 years agoRevert "rtsp-sdp: Parse width/height from caps and set SDP attribute"
Wim Taymans [Fri, 31 May 2013 13:28:58 +0000 (15:28 +0200)]
Revert "rtsp-sdp: Parse width/height from caps and set SDP attribute"

This reverts commit 5fd034ff1a517db7f629ffcc3ed16839c61f5c97.

We already have a way to place extra attributes in the SDP by using a string
property with prefix x- or a- in the caps.

11 years agoRevert "rtsp-sdp: Parse framerate caps field and set SDP attribute"
Wim Taymans [Fri, 31 May 2013 13:27:48 +0000 (15:27 +0200)]
Revert "rtsp-sdp: Parse framerate caps field and set SDP attribute"

This reverts commit d6a4dee03642a2d2c05fec4752dc3ccb60b19494.

We already have a way to place extra attributes in the SDP, just make a string
property in the payloader with a- or x- prefix.

11 years agortsp: place a- and x- properties as attributes
Wim Taymans [Fri, 31 May 2013 13:41:55 +0000 (15:41 +0200)]
rtsp: place a- and x- properties as attributes

application/x-rtp has properties with a- and x- prefixes that should be
placed as attributes in the SDP for the media instead of being added to the
fmtp.

11 years agoexample: add TLS example
Wim Taymans [Fri, 31 May 2013 10:10:28 +0000 (12:10 +0200)]
example: add TLS example

11 years agoserver: add support for TLS
Wim Taymans [Fri, 31 May 2013 09:42:36 +0000 (11:42 +0200)]
server: add support for TLS

Add methods to set and get a TLS certificate.
Add vmethod to configure a new connection. By default, configure the TLS
certificate in a new connection if needed.

11 years agoserver: remove accept_client vmethod
Wim Taymans [Fri, 31 May 2013 09:14:17 +0000 (11:14 +0200)]
server: remove accept_client vmethod

This vmethod is not very useful so remove it.

11 years agoserver: don't crash on NULL GError
Wim Taymans [Thu, 30 May 2013 15:23:51 +0000 (17:23 +0200)]
server: don't crash on NULL GError

11 years agortsp-session-pool: corrected session timeout detection
Patricia Muscalu [Thu, 30 May 2013 08:46:33 +0000 (10:46 +0200)]
rtsp-session-pool: corrected session timeout detection

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701253