[Telepathy-commits] [telepathy-spec/master] Channel.Type.Text: resolve the long-running close-with-pending-messages bug.

Simon McVittie simon.mcvittie at collabora.co.uk
Wed Aug 27 08:09:35 PDT 2008


The CM must now reopen the channel in order to deliver those messages (this
will lead to the channel dispatcher re-dispatching it, hopefully to a channel
handler that will ack the messages correctly).

20080701132816-53eee-bf43f41102576f36389fefc0e7c9b531e7c9ed19.gz
---
 spec/Channel_Type_Text.xml |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/spec/Channel_Type_Text.xml b/spec/Channel_Type_Text.xml
index 049ed6b..09da5d5 100644
--- a/spec/Channel_Type_Text.xml
+++ b/spec/Channel_Type_Text.xml
@@ -463,6 +463,37 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         and handle type CONTACT should continue to succeed, but may return
         a channel with handle type 0, handle 0, the group interface,
         and the local and remote contacts in its members.</p>
+
+      <p>If a channel of type Text is closed while it has pending messages,
+        the connection manager MUST allow this, but SHOULD open a new,
+        identical channel to deliver those messages, signalling it as a new
+        channel with the
+        <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection">NewChannel</tp:dbus-ref>
+        signal.</p>
+
+      <tp:rationale>
+        <p>In effect, this turns this situation, in which a naive
+          implementation might lose messages:</p>
+
+        <ul>
+          <li>UI window is closed</li>
+          <li>message arrives</li>
+          <li>text channel emits Received</li>
+          <li>UI calls Close on text channel</li>
+          <li>text channel emits Closed and closes</li>
+        </ul>
+
+        <p>into something nearly equivalent to this situation, which is
+          fine:</p>
+
+        <ul>
+          <li>UI window is closed</li>
+          <li>UI calls Close on text channel</li>
+          <li>text channel emits Closed and closes</li>
+          <li>message arrives</li>
+          <li>new text channel is created, connection emits NewChannel</li>
+        </ul>
+      </tp:rationale>
     </tp:docstring>
   </interface>
 </node>
-- 
1.5.6.3




More information about the Telepathy-commits mailing list