After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 610477 - should hang up calls gracefully rather than calling StreamHandler.Error()
should hang up calls gracefully rather than calling StreamHandler.Error()
Status: RESOLVED FIXED
Product: empathy
Classification: Core
Component: VoIP
2.29.x
Other Linux
: Normal normal
: ---
Assigned To: empathy-maint
Depends on:
Blocks:
 
 
Reported: 2010-02-19 17:52 UTC by Simon McVittie
Modified: 2010-03-30 11:33 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
http://git.collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/hang-up-610477 (3.54 KB, patch)
2010-03-11 13:09 UTC, Guillaume Desmottes
none Details | Review

Description Simon McVittie 2010-02-19 17:52:47 UTC
When Empathy ends a call, it seems to do so by calling Error() on the streams. This indicates an internal error in the streaming implementation, so (for instance) Gabble responds by sending <general-error/> in the stream-terminate stanza.

Instead, Empathy should terminate the call gracefully, by using either RemoveMembers([self_handle]) or Close(). This will/should result in Gabble sending <success/> in the stream-terminate stanza.

If it's necessary to terminate the streams with Error(), I believe connection managers will send the right termination reason if you do so *after* ending the call?
Comment 1 Guillaume Desmottes 2010-02-22 18:07:10 UTC
I quickly hacked a branch doing that: http://git.collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/hang-up-610477

It still need some more testing but could you try it and check if it works as you expected please?
Comment 2 Guillaume Desmottes 2010-03-11 13:09:45 UTC
Created attachment 155854 [details] [review]
http://git.collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/hang-up-610477

 libempathy/empathy-call-handler.c |    2 +-
 libempathy/empathy-tp-call.c      |   46 +++++++++++++++++++++++++++++++++++++
 libempathy/empathy-tp-call.h      |    2 +
 src/empathy-call-window.c         |   13 +++++++++-
 4 files changed, 60 insertions(+), 3 deletions(-)
Comment 3 Danielle Madeley 2010-03-30 10:51:12 UTC
Review of attachment 155854 [details] [review]:

::: libempathy/empathy-tp-call.c
@@ +855,3 @@
+    }
+
+  array = g_array_sized_new (FALSE, FALSE, sizeof (TpHandle), 1);

You could put this array on the stack, even though self_handle isn't assigned yet, because it's a point to the memory self_handle will be stored in.

GArray array = { &self_handle, 1 };
Comment 4 Guillaume Desmottes 2010-03-30 11:33:01 UTC
This problem has been fixed in the development version. The fix will be available in the next major software release. Thank you for your bug report.