Bug 26282

Summary: Terminate calls correctly
Product: Telepathy Reporter: Simon McVittie <smcv>
Component: fargoAssignee: Simon McVittie <smcv>
Status: RESOLVED FIXED QA Contact: David Laban <david.laban>
Severity: normal    
Priority: medium Keywords: patch
Version: git master   
Hardware: Other   
OS: All   
URL: http://git.collabora.co.uk/?p=user/smcv/telepathy-fargo.git;a=shortlog;h=refs/heads/errors
Whiteboard: milestone4.7 est=10h done=7h
i915 platform: i915 features:
Bug Depends on: 26413    
Bug Blocks:    

Description Simon McVittie 2010-01-27 11:00:27 UTC
Fargo currently always uses <general-error/> as the reason for session-terminate.

Estimate: 3h?
Comment 1 Simon McVittie 2010-02-16 08:13:28 UTC
smcv/errors has somewhat poor coverage but should address this.

http://git.collabora.co.uk/?p=user/smcv/telepathy-fargo.git;a=shortlog;h=refs/heads/errors
Comment 2 Simon McVittie 2010-02-16 08:15:00 UTC
estimate 3h -> 8h including better coverage, 7h done already
Comment 3 Simon McVittie 2010-02-16 08:21:59 UTC
estimate -> 10h; actually, we need to terminate calls via the Telepathy Group API to get this right. At the moment Fargo-Fargo loopback will always get <media-error/>, because we terminate the call by calling Error() on a media stream.
Comment 4 Simon McVittie 2010-02-16 10:43:12 UTC
A longer errors branch now covers more cases.
Comment 5 David Laban 2010-02-17 08:27:58 UTC
http://git.collabora.co.uk/?p=user/smcv/telepathy-fargo.git;a=commitdiff;h=4d7aa7365180e5871751a48543bf218e987d30b5 -- very magical, but I guess weakref related stuff always is. 

Should __changed_cb() call cancel() in most cases, so we don't end up with _name_owner_watches floating about if one person signs in and then makes a load of calls without logging out.

Other than that, everything seems fine.
Comment 6 Simon McVittie 2010-02-17 11:46:42 UTC
(In reply to comment #5)
> http://git.collabora.co.uk/?p=user/smcv/telepathy-fargo.git;a=commitdiff;h=4d7aa7365180e5871751a48543bf218e987d30b5
> 
> Should __changed_cb() call cancel() in most cases

Well spotted. If the name is unique and the new owner is empty, then __changed_cb() should cancel the watch, since the same unique name will never come back (that's the point). However, if the name is well-known, it shouldn't, since the owner could come back (although Fargo never hits this case).

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.