Hello community,

here is the log from the commit of package telepathy-glib for openSUSE:Factory
checked in at Wed Oct 5 17:48:20 CEST 2011.



--------
--- openSUSE:Factory/telepathy-glib/telepathy-glib.changes      2011-10-04 
18:15:20.000000000 +0200
+++ /mounts/work_src_done/STABLE/telepathy-glib/telepathy-glib.changes  
2011-10-05 07:53:21.000000000 +0200
@@ -1,0 +2,18 @@
+Wed Oct  5 05:38:12 UTC 2011 - vu...@opensuse.org
+
+- Update to version 0.15.7:
+  + Fixes:
+    - fdo#40555: Memory leaks in TpConnection and protocol.c
+    - Memory leak if the debug message cache is disabled
+    - fdo#38060: Fix a crash in TpMessageMixin, triggered by
+      delivery reports.
+    - fdo#38997: Cope beter if UNIX sockets are not supported.
+    - fdo#40523: Connection Manager crash when a client acks the
+      same message twice.
+    - fdo#41414: Make sure tp_connection_upgrade_contacts() is
+      no-op if all features are already prepared.
+    - fdo#41368: Fix introspection.
+    - fdo#41435: Ensure sent messages have a sender even with
+      butterfly, which does not set "message-sender".
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


Old:
----
  telepathy-glib-0.15.6.tar.gz

New:
----
  telepathy-glib-0.15.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ telepathy-glib.spec ++++++
--- /var/tmp/diff_new_pack.WBe17c/_old  2011-10-05 17:48:08.000000000 +0200
+++ /var/tmp/diff_new_pack.WBe17c/_new  2011-10-05 17:48:08.000000000 +0200
@@ -18,7 +18,7 @@
 
 
 Name:           telepathy-glib
-Version:        0.15.6
+Version:        0.15.7
 Release:        1
 License:        LGPLv2.1
 Summary:        Libraries for adding telepathy support to applications that 
use glib

++++++ telepathy-glib-0.15.6.tar.gz -> telepathy-glib-0.15.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/ChangeLog 
new/telepathy-glib-0.15.7/ChangeLog
--- old/telepathy-glib-0.15.6/ChangeLog 2011-09-30 15:51:34.000000000 +0200
+++ new/telepathy-glib-0.15.7/ChangeLog 2011-10-04 17:05:40.000000000 +0200
@@ -1,3 +1,140 @@
+commit b0c14c2613232de12ce8800230471db93517d7d4
+Author: Xavier Claessens <xclae...@gmail.com>
+Date:   2011-10-03 14:38:03 +0200
+
+    Version 0.15.7
+
+commit f1b611ea1a5e06cd801d059db05dd00de6ad5e1c
+Merge: be94076 41be1c9
+Author: Will Thompson <will.thomp...@collabora.co.uk>
+Date:   2011-10-04 15:41:18 +0100
+
+    Merge branch 'telepathy-glib-0.14'
+    
+    Conflicts:
+       NEWS
+       configure.ac
+       telepathy-glib/message-mixin.c
+
+commit 41be1c9d7467a643efc6c12cf3b96816d98fbd30
+Author: Will Thompson <will.thomp...@collabora.co.uk>
+Date:   2011-10-04 15:31:12 +0100
+
+    Nano-version bump to 0.14.10.1
+
+commit 041f910c3c94caa7eed412acd645bec68408fc22
+Author: Will Thompson <will.thomp...@collabora.co.uk>
+Date:   2011-10-04 15:22:21 +0100
+
+    Version 0.14.10
+
+commit cb7875e4bf52b8553d4cab670ac6e0484afa5f6d
+Author: Will Thompson <will.thomp...@collabora.co.uk>
+Date:   2011-10-04 15:21:25 +0100
+
+    More NEWS for 0.14.10
+
+commit 1c1c688e8c6ceda679c1473c7454ee6db2710007
+Merge: a899ab8 dff3ce5
+Author: Will Thompson <will.thomp...@collabora.co.uk>
+Date:   2011-10-04 15:05:11 +0100
+
+    Merge branch '40523-crash-on-ack' into telepathy-glib-0.14
+    
+    Reviewed-by: Xavier Claessens <xclae...@gmail.com>
+
+commit dff3ce56fe82a9b16068d0cdcbc508d2d3c390ba
+Author: Will Thompson <will.thomp...@collabora.co.uk>
+Date:   2011-10-04 14:16:07 +0100
+
+    MessageMixin: DEBUG if AckPM gets an id more than once
+
+commit be940765ac3e355ee7efb52a49bf68431e52b0c0
+Author: Xavier Claessens <xclae...@gmail.com>
+Date:   2011-10-03 15:05:05 +0200
+
+    test_upgrade_noop: verify with all features
+
+commit 535ac16a74b535c3256e7acd9757a61e23bfc493
+Author: Xavier Claessens <xclae...@gmail.com>
+Date:   2011-10-03 14:18:20 +0200
+
+    Add regression test case to verify no-op upgrade
+
+commit b693c190495599b90ca07f9441cf6ecc41bd5169
+Author: Xavier Claessens <xclae...@gmail.com>
+Date:   2011-10-03 12:41:10 +0200
+
+    Make sure tp_connection_upgrade_contacts() is no-op if all features are 
already prepared
+
+commit dedd4a32647c96dd3854120c5c20b319ed00fbae
+Author: Xavier Claessens <xclae...@gmail.com>
+Date:   2011-10-04 10:48:05 +0200
+
+    Add unit test for sent message without message-sender
+
+commit bd5f36739a0e9b16c9351b1ac71a5ba26e24cf87
+Author: Xavier Claessens <xclae...@gmail.com>
+Date:   2011-10-04 08:05:56 +0200
+
+    TpTextChannel: Fallback to self contact if sent message does not have a 
sender
+    
+    This was a regression, butterfly does not set message-sender on sent 
messages.
+    
+    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=41435
+
+commit e6886e1af905cbd11b91dcd82104ee5a394863fa
+Author: Will Thompson <will.thomp...@collabora.co.uk>
+Date:   2011-10-03 14:20:01 +0100
+
+    MessageMixin: don't repeatedly scan pending message list
+    
+    g_queue_remove() has to traverse the list, comparing data pointers,
+    until it finds the link we want to remove. It's stupid to use it here,
+    because we already *have* a pointer to each link we want to remove.
+
+commit 4d41eec6c0b51c8bedd2a15fafc64529e45c4340
+Author: Will Thompson <will.thomp...@collabora.co.uk>
+Date:   2011-10-03 13:54:57 +0100
+
+    MessageMixin: don't crash if an id appears twice
+    
+    Fixes: <https://bugs.freedesktop.org/show_bug.cgi?id=40523>
+
+commit c3f9dd779c1d780eab6d0de8be510c2ea45fc796
+Author: Will Thompson <will.thomp...@collabora.co.uk>
+Date:   2011-10-03 12:57:41 +0100
+
+    MessageMixin: track messages to be acked in a GPtrArray
+    
+    Since 'ids' may contain duplicates (which a future patch will filter
+    out), using an array of GList *s is a bit cumbersome: we'd have to be
+    sure not to index elements of it which haven't been initialized. Using a
+    GPtrArray is clearer.
+
+commit 89b27c10020723769d4c7732c56f9ff809801c01
+Author: Xavier Claessens <xclae...@gmail.com>
+Date:   2011-10-03 10:19:17 +0200
+
+    Add warning comment to warn that ordering matters for gi-scanner
+
+commit c1b9b9f899589e3fc3a340ef5f0a22b962a32ee1
+Author: Xavier Claessens <xclae...@gmail.com>
+Date:   2011-10-03 10:17:17 +0200
+
+    Revert "Sort alphabetically introspected files"
+    
+    This reverts commit 48998822d5e9575af822c1936b35be514dc2401b.
+    
+    It seems gi-scanner depends on the order the files are given.
+    See https://bugzilla.gnome.org/show_bug.cgi?id=660629
+
+commit 48e8194462ade5440f9a76121796383676148f6e
+Author: Xavier Claessens <xclae...@gmail.com>
+Date:   2011-10-03 12:23:44 +0200
+
+    Nano-version bump
+
 commit 43b597d8bb9d67d4256961981b5a578b6a2e44b5
 Author: Xavier Claessens <xclae...@gmail.com>
 Date:   2011-09-30 14:30:23 +0200
@@ -212,6 +349,12 @@
     
     Signed-off-by: Jonny Lamb <jonny.l...@collabora.co.uk>
 
+commit a899ab819ccb3f60b083822eedb0f7989bee3707
+Author: Vivek Dasmohapatra <vi...@collabora.co.uk>
+Date:   2011-09-07 17:01:59 +0100
+
+    Update NEWS
+
 commit 55979632725dcce40bf5b6b29cfe4a5e1ed4b7f7
 Merge: 2f8725a 0cb8c83
 Author: Vivek Dasmohapatra <vi...@collabora.co.uk>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/NEWS 
new/telepathy-glib-0.15.7/NEWS
--- old/telepathy-glib-0.15.6/NEWS      2011-09-30 15:34:13.000000000 +0200
+++ new/telepathy-glib-0.15.7/NEWS      2011-10-04 16:57:59.000000000 +0200
@@ -1,3 +1,30 @@
+telepathy-glib 0.15.7 (2011-10-04)
+==================================
+
+Fixes:
+
+• fd.o#40555: Memory leaks in TpConnection and protocol.c (Vivek)
+
+• Memory leak if the debug message cache is disabled (Vivek)
+
+• fd.o#38060: Fix a crash in TpMessageMixin, triggered by delivery
+  reports. (Danni)
+
+• fd.o#38997: Cope beter if UNIX sockets are not supported. (Guillaume)
+
+• fd.o#40523: Connection Manager crash when a client acks the same
+  message twice. (Will)
+
+• fd.o#41414: Make sure tp_connection_upgrade_contacts() is no-op if all
+  features are already prepared (Xavier).
+
+• fd.o#41368: Fix introspection by reverting
+  48998822d5e9575af822c1936b35be514dc2401b. The order in which files are given
+  to gi-scanner matters (Xavier).
+
+• fd.o#41435: Ensure sent messages have a sender even with butterfly, which 
does
+  not set "message-sender" (Xavier).
+
 telepathy-glib 0.15.6 (2011-09-30)
 ==================================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/configure 
new/telepathy-glib-0.15.7/configure
--- old/telepathy-glib-0.15.6/configure 2011-09-30 15:34:59.000000000 +0200
+++ new/telepathy-glib-0.15.7/configure 2011-10-04 16:58:08.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for Telepathy-GLib 0.15.6.
+# Generated by GNU Autoconf 2.68 for Telepathy-GLib 0.15.7.
 #
 # Report bugs to 
<https://bugs.freedesktop.org/enter_bug.cgi?product=Telepathy&component=tp-glib>.
 #
@@ -631,8 +631,8 @@
 # Identity of this package.
 PACKAGE_NAME='Telepathy-GLib'
 PACKAGE_TARNAME='telepathy-glib'
-PACKAGE_VERSION='0.15.6'
-PACKAGE_STRING='Telepathy-GLib 0.15.6'
+PACKAGE_VERSION='0.15.7'
+PACKAGE_STRING='Telepathy-GLib 0.15.7'
 
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=Telepathy&component=tp-glib'
 PACKAGE_URL=''
 
@@ -1459,7 +1459,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Telepathy-GLib 0.15.6 to adapt to many kinds of 
systems.
+\`configure' configures Telepathy-GLib 0.15.7 to adapt to many kinds of 
systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1529,7 +1529,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Telepathy-GLib 0.15.6:";;
+     short | recursive ) echo "Configuration of Telepathy-GLib 0.15.7:";;
    esac
   cat <<\_ACEOF
 
@@ -1682,7 +1682,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Telepathy-GLib configure 0.15.6
+Telepathy-GLib configure 0.15.7
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2172,7 +2172,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Telepathy-GLib $as_me 0.15.6, which was
+It was created by Telepathy-GLib $as_me 0.15.7, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2990,7 +2990,7 @@
 
 # Define the identity of the package.
  PACKAGE='telepathy-glib'
- VERSION='0.15.6'
+ VERSION='0.15.7'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -18019,7 +18019,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Telepathy-GLib $as_me 0.15.6, which was
+This file was extended by Telepathy-GLib $as_me 0.15.7, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18085,7 +18085,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Telepathy-GLib config.status 0.15.6
+Telepathy-GLib config.status 0.15.7
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/configure.ac 
new/telepathy-glib-0.15.7/configure.ac
--- old/telepathy-glib-0.15.6/configure.ac      2011-09-30 15:34:17.000000000 
+0200
+++ new/telepathy-glib-0.15.7/configure.ac      2011-10-04 16:57:59.000000000 
+0200
@@ -11,7 +11,7 @@
 
 m4_define([tp_glib_major_version], [0])
 m4_define([tp_glib_minor_version], [15])
-m4_define([tp_glib_micro_version], [6])
+m4_define([tp_glib_micro_version], [7])
 m4_define([tp_glib_nano_version], [0])
 
 # If library source has changed since last release, increment revision
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/docs/reference/html/index.html 
new/telepathy-glib-0.15.7/docs/reference/html/index.html
--- old/telepathy-glib-0.15.6/docs/reference/html/index.html    2011-09-30 
15:51:34.000000000 +0200
+++ new/telepathy-glib-0.15.7/docs/reference/html/index.html    2011-10-04 
17:05:39.000000000 +0200
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" 
cellspacing="0"><tr><th valign="middle"><p class="title">telepathy-glib API 
Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      This manual documents telepathy-glib version 0.15.6
+      This manual documents telepathy-glib version 0.15.7
 .
       The latest development version of this documentation can be found here:
       <a class="ulink" 
href="http://telepathy.freedesktop.org/doc/telepathy-glib/"; 
target="_top">online copy of the telepathy-glib API Reference Manual</a>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/docs/reference/version.xml 
new/telepathy-glib-0.15.7/docs/reference/version.xml
--- old/telepathy-glib-0.15.6/docs/reference/version.xml        2011-09-30 
15:35:13.000000000 +0200
+++ new/telepathy-glib-0.15.7/docs/reference/version.xml        2011-10-04 
16:58:21.000000000 +0200
@@ -1 +1 @@
-0.15.6
+0.15.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/telepathy-glib/Makefile.in 
new/telepathy-glib-0.15.7/telepathy-glib/Makefile.in
--- old/telepathy-glib-0.15.6/telepathy-glib/Makefile.in        2011-09-30 
15:35:03.000000000 +0200
+++ new/telepathy-glib-0.15.7/telepathy-glib/Makefile.in        2011-10-04 
16:58:12.000000000 +0200
@@ -828,64 +828,67 @@
        kludge.xsl \
        $(NULL)
 
+
+# /!\ Order matters, see https://bugzilla.gnome.org/show_bug.cgi?id=660629
 @HAVE_INTROSPECTION_TRUE@INTROSPECTION_FILES = \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/proxy.c _gen/proxy-introspectable.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/account.c $(srcdir)/account.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/account-channel-request.c 
$(srcdir)/account-channel-request.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/account-manager.c 
$(srcdir)/account-manager.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/add-dispatch-operation-context.c 
$(srcdir)/add-dispatch-operation-context.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/automatic-client-factory.c 
$(srcdir)/automatic-client-factory.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/automatic-proxy-factory.c 
$(srcdir)/automatic-proxy-factory.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/base-client.c $(srcdir)/base-client.h 
\
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/base-connection.c 
$(srcdir)/base-connection.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/basic-proxy-factory.c 
$(srcdir)/basic-proxy-factory.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/capabilities.c 
$(srcdir)/capabilities.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel.c $(srcdir)/channel.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-contacts.c \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-dispatcher.c 
$(srcdir)/channel-dispatcher.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-dispatch-operation.c 
$(srcdir)/channel-dispatch-operation.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-group.c \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-request.c 
$(srcdir)/channel-request.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/client-channel-factory.c 
$(srcdir)/client-channel-factory.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/client-message.c 
$(srcdir)/client-message.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/connection.c $(srcdir)/connection.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/connection-avatars.c \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/connection-contact-list.c 
$(srcdir)/connection-contact-list.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/connection-handles.c 
$(srcdir)/connection-contact-info.c \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/connection-avatars.c \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/protocol.c $(srcdir)/protocol.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/connection-manager.c 
$(srcdir)/connection-manager.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel.c $(srcdir)/channel.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-group.c \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-contacts.c \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/handle.c $(srcdir)/handle.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/handle-channels-context.c 
$(srcdir)/handle-channels-context.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/dbus-daemon.c $(srcdir)/dbus-daemon.h 
\
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/interfaces.c \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/intset.c $(srcdir)/intset.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/dbus.c $(srcdir)/dbus.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/capabilities.c 
$(srcdir)/capabilities.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/contact.c $(srcdir)/contact.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/contact-operations.c 
$(srcdir)/contact-operations.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/contact-search.c 
$(srcdir)/contact-search.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/contact-search-result.c 
$(srcdir)/contact-search-result.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/contacts-mixin.c 
$(srcdir)/contacts-mixin.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/dbus.c $(srcdir)/dbus.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/dbus-daemon.c $(srcdir)/dbus-daemon.h 
\
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/dbus-properties-mixin.c 
$(srcdir)/dbus-properties-mixin.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/dbus-tube-channel.c 
$(srcdir)/dbus-tube-channel.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/debug.c $(srcdir)/debug.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/defs.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/errors.c $(srcdir)/errors.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/file-transfer-channel.c 
$(srcdir)/file-transfer-channel.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/group-mixin.c $(srcdir)/group-mixin.h 
\
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/handle.c $(srcdir)/handle.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/handle-channels-context.c 
$(srcdir)/handle-channels-context.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/handle-repo.c $(srcdir)/handle-repo.h 
$(srcdir)/handle-set.c \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/interfaces.c \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/intset.c $(srcdir)/intset.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/message.c $(srcdir)/message.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/observe-channels-context.c 
$(srcdir)/observe-channels-context.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/presence-mixin.c 
$(srcdir)/presence-mixin.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/protocol.c $(srcdir)/protocol.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/proxy.c _gen/proxy-introspectable.h \
-@HAVE_INTROSPECTION_TRUE@      $(srcdir)/signalled-message.c 
$(srcdir)/signalled-message.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/debug.c $(srcdir)/debug.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/base-client.c $(srcdir)/base-client.h 
\
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/simple-approver.c 
$(srcdir)/simple-approver.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/simple-client-factory.c 
$(srcdir)/simple-client-factory.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/simple-handler.c 
$(srcdir)/simple-handler.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/simple-observer.c 
$(srcdir)/simple-observer.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/dbus-properties-mixin.c 
$(srcdir)/dbus-properties-mixin.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/contacts-mixin.c 
$(srcdir)/contacts-mixin.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/group-mixin.c $(srcdir)/group-mixin.h 
\
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/presence-mixin.c 
$(srcdir)/presence-mixin.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-dispatch-operation.c 
$(srcdir)/channel-dispatch-operation.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-request.c 
$(srcdir)/channel-request.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/observe-channels-context.c 
$(srcdir)/observe-channels-context.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/add-dispatch-operation-context.c 
$(srcdir)/add-dispatch-operation-context.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/protocol.c $(srcdir)/protocol.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/base-connection.c 
$(srcdir)/base-connection.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/handle-repo.c $(srcdir)/handle-repo.h 
$(srcdir)/handle-set.c \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/stream-tube-channel.c 
$(srcdir)/stream-tube-channel.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/dbus-tube-channel.c 
$(srcdir)/dbus-tube-channel.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/stream-tube-connection.c 
$(srcdir)/stream-tube-connection.h \
 @HAVE_INTROSPECTION_TRUE@      $(srcdir)/text-channel.c 
$(srcdir)/text-channel.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/file-transfer-channel.c 
$(srcdir)/file-transfer-channel.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/client-message.c 
$(srcdir)/client-message.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/message.c $(srcdir)/message.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/signalled-message.c 
$(srcdir)/signalled-message.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/channel-dispatcher.c 
$(srcdir)/channel-dispatcher.h \
+@HAVE_INTROSPECTION_TRUE@      $(srcdir)/errors.c $(srcdir)/errors.h \
 @HAVE_INTROSPECTION_TRUE@      _gen/telepathy-enums.h 
_gen/telepathy-enums-gtk-doc.h \
-@HAVE_INTROSPECTION_TRUE@      _gen/telepathy-interfaces.h 
_gen/telepathy-interfaces-gtk-doc.h\
+@HAVE_INTROSPECTION_TRUE@      _gen/telepathy-interfaces.h \
 @HAVE_INTROSPECTION_TRUE@      $(NULL)
 
 @HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0
@@ -1794,7 +1797,6 @@
 @HAVE_INTROSPECTION_TRUE@              $(srcdir)/kludge.xsl \
 @HAVE_INTROSPECTION_TRUE@              $(INTROSPECTION_FILES)
 @HAVE_INTROSPECTION_TRUE@      $(AM_V_GEN)$(INTROSPECTION_SCANNER) -v \
-@HAVE_INTROSPECTION_TRUE@              --warn-all \
 @HAVE_INTROSPECTION_TRUE@              --namespace TelepathyGLib \
 @HAVE_INTROSPECTION_TRUE@              --nsversion=0.12 \
 @HAVE_INTROSPECTION_TRUE@              --identifier-prefix=Tp \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/telepathy-glib/contact.c 
new/telepathy-glib-0.15.7/telepathy-glib/contact.c
--- old/telepathy-glib-0.15.6/telepathy-glib/contact.c  2011-09-30 
14:22:58.000000000 +0200
+++ new/telepathy-glib-0.15.7/telepathy-glib/contact.c  2011-10-04 
14:24:30.000000000 +0200
@@ -4029,6 +4029,28 @@
   return TRUE;
 }
 
+static void
+contacts_context_remove_common_features (ContactsContext *context)
+{
+  ContactFeatureFlags minimal_feature_flags = 0xFFFFFFFF;
+  guint i;
+
+  context->contacts_have_ids = TRUE;
+
+  for (i = 0; i < context->contacts->len; i++)
+    {
+      TpContact *contact = g_ptr_array_index (context->contacts, i);
+
+      minimal_feature_flags &= contact->priv->has_features;
+
+      if (contact->priv->identifier == NULL)
+        context->contacts_have_ids = FALSE;
+    }
+
+  context->wanted &= (~minimal_feature_flags);
+}
+
+
 /**
  * tp_connection_get_contacts_by_handle:
  * @self: A connection, which must be ready (#TpConnection:connection-ready
@@ -4073,7 +4095,6 @@
   ContactFeatureFlags feature_flags = 0;
   ContactsContext *context;
   GPtrArray *contacts;
-  guint i;
 
   /* As an implementation detail, this method actually starts working slightly
    * before we're officially ready. We use this to get the TpContact for the
@@ -4099,27 +4120,13 @@
 
   if (contacts != NULL)
     {
-      ContactFeatureFlags minimal_feature_flags = 0xFFFFFFFF;
-
       /* We have already held (and possibly inspected) handles, so we can
        * skip that. */
 
-      context->contacts_have_ids = TRUE;
+      g_ptr_array_foreach (contacts, (GFunc) g_object_ref, NULL);
+      tp_g_ptr_array_extend (context->contacts, contacts);
 
-      for (i = 0; i < n_handles; i++)
-        {
-          TpContact *contact = g_object_ref (g_ptr_array_index (contacts, i));
-
-          minimal_feature_flags &= contact->priv->has_features;
-          g_ptr_array_add (context->contacts, contact);
-
-          if (contact->priv->identifier == NULL)
-            context->contacts_have_ids = FALSE;
-        }
-
-      /* This context won't need to retrieve any features that every
-       * contact in the list already has. */
-      context->wanted &= (~minimal_feature_flags);
+      contacts_context_remove_common_features (context);
 
       /* We do need to retrieve any features that aren't there yet, though. */
       if (tp_proxy_has_interface_by_id (self,
@@ -4236,10 +4243,10 @@
       g_array_append_val (context->handles, contacts[i]->priv->handle);
     }
 
-  context->contacts_have_ids = TRUE;
-
   g_assert (context->handles->len == n_contacts);
 
+  contacts_context_remove_common_features (context);
+
   if (tp_proxy_has_interface_by_id (self,
         TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACTS))
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/telepathy-glib-0.15.6/telepathy-glib/introspection.am 
new/telepathy-glib-0.15.7/telepathy-glib/introspection.am
--- old/telepathy-glib-0.15.6/telepathy-glib/introspection.am   2011-09-30 
12:57:25.000000000 +0200
+++ new/telepathy-glib-0.15.7/telepathy-glib/introspection.am   2011-10-03 
14:19:03.000000000 +0200
@@ -7,64 +7,66 @@
 
 if HAVE_INTROSPECTION
 
+# /!\ Order matters, see https://bugzilla.gnome.org/show_bug.cgi?id=660629
 INTROSPECTION_FILES = \
+       $(srcdir)/proxy.c _gen/proxy-introspectable.h \
        $(srcdir)/account.c $(srcdir)/account.h \
        $(srcdir)/account-channel-request.c $(srcdir)/account-channel-request.h 
\
        $(srcdir)/account-manager.c $(srcdir)/account-manager.h \
-       $(srcdir)/add-dispatch-operation-context.c 
$(srcdir)/add-dispatch-operation-context.h \
        $(srcdir)/automatic-client-factory.c 
$(srcdir)/automatic-client-factory.h \
        $(srcdir)/automatic-proxy-factory.c $(srcdir)/automatic-proxy-factory.h 
\
-       $(srcdir)/base-client.c $(srcdir)/base-client.h \
-       $(srcdir)/base-connection.c $(srcdir)/base-connection.h \
        $(srcdir)/basic-proxy-factory.c $(srcdir)/basic-proxy-factory.h \
-       $(srcdir)/capabilities.c $(srcdir)/capabilities.h \
-       $(srcdir)/channel.c $(srcdir)/channel.h \
-       $(srcdir)/channel-contacts.c \
-       $(srcdir)/channel-dispatcher.c $(srcdir)/channel-dispatcher.h \
-       $(srcdir)/channel-dispatch-operation.c 
$(srcdir)/channel-dispatch-operation.h \
-       $(srcdir)/channel-group.c \
-       $(srcdir)/channel-request.c $(srcdir)/channel-request.h \
        $(srcdir)/client-channel-factory.c $(srcdir)/client-channel-factory.h \
-       $(srcdir)/client-message.c $(srcdir)/client-message.h \
        $(srcdir)/connection.c $(srcdir)/connection.h \
-       $(srcdir)/connection-avatars.c \
        $(srcdir)/connection-contact-list.c $(srcdir)/connection-contact-list.h 
\
        $(srcdir)/connection-handles.c $(srcdir)/connection-contact-info.c \
+       $(srcdir)/connection-avatars.c \
+       $(srcdir)/protocol.c $(srcdir)/protocol.h \
        $(srcdir)/connection-manager.c $(srcdir)/connection-manager.h \
+       $(srcdir)/channel.c $(srcdir)/channel.h \
+       $(srcdir)/channel-group.c \
+       $(srcdir)/channel-contacts.c \
+       $(srcdir)/handle.c $(srcdir)/handle.h \
+       $(srcdir)/handle-channels-context.c $(srcdir)/handle-channels-context.h 
\
+       $(srcdir)/dbus-daemon.c $(srcdir)/dbus-daemon.h \
+       $(srcdir)/interfaces.c \
+       $(srcdir)/intset.c $(srcdir)/intset.h \
+       $(srcdir)/dbus.c $(srcdir)/dbus.h \
+       $(srcdir)/capabilities.c $(srcdir)/capabilities.h \
        $(srcdir)/contact.c $(srcdir)/contact.h \
        $(srcdir)/contact-operations.c $(srcdir)/contact-operations.h \
        $(srcdir)/contact-search.c $(srcdir)/contact-search.h \
        $(srcdir)/contact-search-result.c $(srcdir)/contact-search-result.h \
-       $(srcdir)/contacts-mixin.c $(srcdir)/contacts-mixin.h \
-       $(srcdir)/dbus.c $(srcdir)/dbus.h \
-       $(srcdir)/dbus-daemon.c $(srcdir)/dbus-daemon.h \
-       $(srcdir)/dbus-properties-mixin.c $(srcdir)/dbus-properties-mixin.h \
-       $(srcdir)/dbus-tube-channel.c $(srcdir)/dbus-tube-channel.h \
-       $(srcdir)/debug.c $(srcdir)/debug.h \
        $(srcdir)/defs.h \
-       $(srcdir)/errors.c $(srcdir)/errors.h \
-       $(srcdir)/file-transfer-channel.c $(srcdir)/file-transfer-channel.h \
-       $(srcdir)/group-mixin.c $(srcdir)/group-mixin.h \
-       $(srcdir)/handle.c $(srcdir)/handle.h \
-       $(srcdir)/handle-channels-context.c $(srcdir)/handle-channels-context.h 
\
-       $(srcdir)/handle-repo.c $(srcdir)/handle-repo.h $(srcdir)/handle-set.c \
-       $(srcdir)/interfaces.c \
-       $(srcdir)/intset.c $(srcdir)/intset.h \
-       $(srcdir)/message.c $(srcdir)/message.h \
-       $(srcdir)/observe-channels-context.c 
$(srcdir)/observe-channels-context.h \
-       $(srcdir)/presence-mixin.c $(srcdir)/presence-mixin.h \
-       $(srcdir)/protocol.c $(srcdir)/protocol.h \
-       $(srcdir)/proxy.c _gen/proxy-introspectable.h \
-       $(srcdir)/signalled-message.c $(srcdir)/signalled-message.h \
+       $(srcdir)/debug.c $(srcdir)/debug.h \
+       $(srcdir)/base-client.c $(srcdir)/base-client.h \
        $(srcdir)/simple-approver.c $(srcdir)/simple-approver.h \
        $(srcdir)/simple-client-factory.c $(srcdir)/simple-client-factory.h \
        $(srcdir)/simple-handler.c $(srcdir)/simple-handler.h \
        $(srcdir)/simple-observer.c $(srcdir)/simple-observer.h \
+       $(srcdir)/dbus-properties-mixin.c $(srcdir)/dbus-properties-mixin.h \
+       $(srcdir)/contacts-mixin.c $(srcdir)/contacts-mixin.h \
+       $(srcdir)/group-mixin.c $(srcdir)/group-mixin.h \
+       $(srcdir)/presence-mixin.c $(srcdir)/presence-mixin.h \
+       $(srcdir)/channel-dispatch-operation.c 
$(srcdir)/channel-dispatch-operation.h \
+       $(srcdir)/channel-request.c $(srcdir)/channel-request.h \
+       $(srcdir)/observe-channels-context.c 
$(srcdir)/observe-channels-context.h \
+       $(srcdir)/add-dispatch-operation-context.c 
$(srcdir)/add-dispatch-operation-context.h \
+       $(srcdir)/protocol.c $(srcdir)/protocol.h \
+       $(srcdir)/base-connection.c $(srcdir)/base-connection.h \
+       $(srcdir)/handle-repo.c $(srcdir)/handle-repo.h $(srcdir)/handle-set.c \
        $(srcdir)/stream-tube-channel.c $(srcdir)/stream-tube-channel.h \
+       $(srcdir)/dbus-tube-channel.c $(srcdir)/dbus-tube-channel.h \
        $(srcdir)/stream-tube-connection.c $(srcdir)/stream-tube-connection.h \
        $(srcdir)/text-channel.c $(srcdir)/text-channel.h \
+       $(srcdir)/file-transfer-channel.c $(srcdir)/file-transfer-channel.h \
+       $(srcdir)/client-message.c $(srcdir)/client-message.h \
+       $(srcdir)/message.c $(srcdir)/message.h \
+       $(srcdir)/signalled-message.c $(srcdir)/signalled-message.h \
+       $(srcdir)/channel-dispatcher.c $(srcdir)/channel-dispatcher.h \
+       $(srcdir)/errors.c $(srcdir)/errors.h \
        _gen/telepathy-enums.h _gen/telepathy-enums-gtk-doc.h \
-       _gen/telepathy-interfaces.h _gen/telepathy-interfaces-gtk-doc.h\
+       _gen/telepathy-interfaces.h \
        $(NULL)
 
 _gen/proxy-introspectable.h: proxy.h introspection.am
@@ -76,7 +78,6 @@
                $(srcdir)/kludge.xsl \
                $(INTROSPECTION_FILES)
        $(AM_V_GEN)$(INTROSPECTION_SCANNER) -v \
-               --warn-all \
                --namespace TelepathyGLib \
                --nsversion=0.12 \
                --identifier-prefix=Tp \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/telepathy-glib/message-mixin.c 
new/telepathy-glib-0.15.7/telepathy-glib/message-mixin.c
--- old/telepathy-glib-0.15.6/telepathy-glib/message-mixin.c    2011-09-30 
14:22:58.000000000 +0200
+++ new/telepathy-glib-0.15.7/telepathy-glib/message-mixin.c    2011-10-04 
16:54:54.000000000 +0200
@@ -55,6 +55,7 @@
 #include <telepathy-glib/message-mixin.h>
 
 #include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.h>
 #include <string.h>
 
 #include <telepathy-glib/cm-message.h>
@@ -389,19 +390,30 @@
     DBusGMethodInvocation *context)
 {
   TpMessageMixin *mixin = TP_MESSAGE_MIXIN (iface);
-  GList **nodes;
+  GPtrArray *links = g_ptr_array_sized_new (ids->len);
+  TpIntset *seen = tp_intset_new ();
   guint i;
 
-  nodes = g_new (GList *, ids->len);
-
   for (i = 0; i < ids->len; i++)
     {
       guint id = g_array_index (ids, guint, i);
+      GList *link_;
+
+      if (tp_intset_is_member (seen, id))
+        {
+          gchar *client = dbus_g_method_get_sender (context);
 
-      nodes[i] = g_queue_find_custom (mixin->priv->pending,
+          DEBUG ("%s passed message id %u more than once in one call to "
+              "AcknowledgePendingMessages. Foolish pup.", client, id);
+          g_free (client);
+          continue;
+        }
+
+      tp_intset_add (seen, id);
+      link_ = g_queue_find_custom (mixin->priv->pending,
           GUINT_TO_POINTER (id), pending_item_id_equals_data);
 
-      if (nodes[i] == NULL)
+      if (link_ == NULL)
         {
           GError *error = g_error_new (TP_ERRORS, TP_ERROR_INVALID_ARGUMENT,
               "invalid message id %u", id);
@@ -410,26 +422,31 @@
           dbus_g_method_return_error (context, error);
           g_error_free (error);
 
-          g_free (nodes);
+          g_ptr_array_unref (links);
+          tp_intset_destroy (seen);
           return;
         }
+
+      g_ptr_array_add (links, link_);
     }
 
   tp_svc_channel_interface_messages_emit_pending_messages_removed (iface,
       ids);
 
-  for (i = 0; i < ids->len; i++)
+  for (i = 0; i < links->len; i++)
     {
-      TpMessage *item = nodes[i]->data;
-      TpCMMessage *cm_msg = nodes[i]->data;
+      GList *link_ = g_ptr_array_index (links, i);
+      TpMessage *item = link_->data;
+      TpCMMessage *cm_msg = link_->data;
 
       DEBUG ("acknowledging message id %u", cm_msg->incoming_id);
 
-      g_queue_remove (mixin->priv->pending, item);
+      g_queue_delete_link (mixin->priv->pending, link_);
       tp_message_destroy (item);
     }
 
-  g_free (nodes);
+  g_ptr_array_unref (links);
+  tp_intset_destroy (seen);
   tp_svc_channel_type_text_return_from_acknowledge_pending_messages (context);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/telepathy-glib/text-channel.c 
new/telepathy-glib-0.15.7/telepathy-glib/text-channel.c
--- old/telepathy-glib-0.15.6/telepathy-glib/text-channel.c     2011-09-30 
14:22:58.000000000 +0200
+++ new/telepathy-glib-0.15.7/telepathy-glib/text-channel.c     2011-10-04 
14:25:04.000000000 +0200
@@ -217,6 +217,7 @@
 static void
 prepare_sender_async (TpTextChannel *self,
     const GPtrArray *message,
+    gboolean fallback_to_self,
     GAsyncReadyCallback callback,
     gpointer user_data)
 {
@@ -226,11 +227,26 @@
   const gchar *id;
 
   handle = get_sender (self, message, &contact, &id);
+  if (contact == NULL && fallback_to_self)
+    {
+      TpConnection *conn;
+
+      conn = tp_channel_borrow_connection ((TpChannel *) self);
+
+      DEBUG ("Failed to get our self contact, please fix CM (%s)",
+          tp_proxy_get_object_path (conn));
+
+      /* Use the connection self contact as a fallback */
+      contact = tp_connection_get_self_contact (conn);
+      if (contact != NULL)
+        g_object_ref (contact);
+    }
 
   if (contact != NULL)
     {
       GPtrArray *contacts = g_ptr_array_new_with_free_func (g_object_unref);
 
+      /* get_sender() refs the contact, we give that ref to the ptr-array */
       g_ptr_array_add (contacts, contact);
       _tp_channel_contacts_queue_prepare_async (channel,
           contacts, callback, user_data);
@@ -340,7 +356,7 @@
   data->flags = flags;
   data->token = tp_str_empty (token) ? NULL : g_strdup (token);
 
-  prepare_sender_async (self, parts,
+  prepare_sender_async (self, parts, TRUE,
       message_sent_sender_ready_cb, data);
 }
 
@@ -497,7 +513,7 @@
 
   DEBUG ("New message received");
 
-  prepare_sender_async (self, message,
+  prepare_sender_async (self, message, FALSE,
       message_received_sender_ready_cb,
       copy_parts (message));
 }
@@ -657,7 +673,7 @@
     {
       GPtrArray *parts = g_ptr_array_index (messages, i);
 
-      prepare_sender_async (self, parts,
+      prepare_sender_async (self, parts, FALSE,
           pending_message_sender_ready_cb,
           copy_parts (parts));
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/tests/dbus/contacts.c 
new/telepathy-glib-0.15.7/tests/dbus/contacts.c
--- old/telepathy-glib-0.15.6/tests/dbus/contacts.c     2011-09-30 
12:56:51.000000000 +0200
+++ new/telepathy-glib-0.15.7/tests/dbus/contacts.c     2011-10-04 
14:25:04.000000000 +0200
@@ -59,6 +59,28 @@
   TpConnection *no_requests_client_conn;
 } Fixture;
 
+/* We only really actively test TP_CONTACT_FEATURE_ALIAS, but preparing any
+ * of these once should be enough, assuming that the CM is not broken.
+ */
+static TpContactFeature all_contact_features[] = {
+  TP_CONTACT_FEATURE_ALIAS,
+  TP_CONTACT_FEATURE_AVATAR_TOKEN,
+  TP_CONTACT_FEATURE_PRESENCE,
+  TP_CONTACT_FEATURE_LOCATION,
+  TP_CONTACT_FEATURE_CAPABILITIES,
+  TP_CONTACT_FEATURE_AVATAR_DATA,
+  TP_CONTACT_FEATURE_CONTACT_INFO,
+  TP_CONTACT_FEATURE_CLIENT_TYPES,
+  TP_CONTACT_FEATURE_SUBSCRIPTION_STATES,
+  TP_CONTACT_FEATURE_CONTACT_GROUPS
+};
+
+/* If people add new features, they should add them to this test. We could
+ * generate the list dynamically but this seems less brittle.
+ */
+G_STATIC_ASSERT (G_N_ELEMENTS (all_contact_features) == 
NUM_TP_CONTACT_FEATURES);
+
+
 static void
 by_handle_cb (TpConnection *connection,
               guint n_contacts,
@@ -839,44 +861,16 @@
   g_assert (ok);
 }
 
-static void
-test_by_handle_again (Fixture *f,
-    gconstpointer unused G_GNUC_UNUSED)
+static TpHandle
+get_handle_with_no_caps (Fixture *f,
+    const gchar *id)
 {
-  Result result = { g_main_loop_new (NULL, FALSE), NULL, NULL, NULL };
   TpHandle handle;
-  TpHandleRepoIface *service_repo = tp_base_connection_get_handles (
-      f->base_connection, TP_HANDLE_TYPE_CONTACT);
-  TpContact *contact;
-  gpointer weak_pointer;
-  const gchar *alias = "Alice in Wonderland";
   GHashTable *capabilities;
-  /* We only really actively test TP_CONTACT_FEATURE_ALIAS, but preparing any
-   * of these once should be enough, assuming that the CM is not broken.
-   */
-  TpContactFeature features[] = {
-      TP_CONTACT_FEATURE_ALIAS,
-      TP_CONTACT_FEATURE_AVATAR_TOKEN,
-      TP_CONTACT_FEATURE_PRESENCE,
-      TP_CONTACT_FEATURE_LOCATION,
-      TP_CONTACT_FEATURE_CAPABILITIES,
-      TP_CONTACT_FEATURE_AVATAR_DATA,
-      TP_CONTACT_FEATURE_CONTACT_INFO,
-      TP_CONTACT_FEATURE_CLIENT_TYPES,
-      TP_CONTACT_FEATURE_SUBSCRIPTION_STATES,
-      TP_CONTACT_FEATURE_CONTACT_GROUPS
-  };
-
-  g_test_bug ("25181");
-  /* If people add new features, they should add them to this test. We could
-   * generate the list dynamically but this seems less brittle.
-   */
-  g_assert_cmpuint (G_N_ELEMENTS (features), ==, NUM_TP_CONTACT_FEATURES);
 
-  handle = tp_handle_ensure (service_repo, "alice", NULL, NULL);
+  handle = tp_handle_ensure (f->service_repo, id, NULL, NULL);
   g_assert_cmpuint (handle, !=, 0);
-  tp_tests_contacts_connection_change_aliases (f->service_conn, 1, &handle,
-      &alias);
+
   /* Unlike almost every other feature, with capabilities “not sure” and “none”
    * are different: you really might care about the difference between “I don't
    * know if blah can do video” versus “I know blah cannot do video”.
@@ -892,9 +886,28 @@
       capabilities);
   g_hash_table_unref (capabilities);
 
+  return handle;
+}
+
+static void
+test_by_handle_again (Fixture *f,
+    gconstpointer unused G_GNUC_UNUSED)
+{
+  Result result = { g_main_loop_new (NULL, FALSE), NULL, NULL, NULL };
+  TpHandle handle;
+  TpContact *contact;
+  gpointer weak_pointer;
+  const gchar *alias = "Alice in Wonderland";
+
+  g_test_bug ("25181");
+
+  handle = get_handle_with_no_caps (f, "alice");
+  tp_tests_contacts_connection_change_aliases (f->service_conn, 1, &handle,
+      &alias);
+
   tp_connection_get_contacts_by_handle (f->client_conn,
       1, &handle,
-      G_N_ELEMENTS (features), features,
+      G_N_ELEMENTS (all_contact_features), all_contact_features,
       by_handle_cb,
       &result, finish, NULL);
   g_main_loop_run (result.loop);
@@ -916,7 +929,7 @@
 
   tp_connection_get_contacts_by_handle (f->client_conn,
       1, &handle,
-      G_N_ELEMENTS (features), features,
+      G_N_ELEMENTS (all_contact_features), all_contact_features,
       by_handle_cb,
       &result, finish, NULL);
   g_main_loop_run (result.loop);
@@ -1387,6 +1400,46 @@
   g_main_loop_unref (result.loop);
 }
 
+/* Regression test case for fd.o#41414 */
+static void
+test_upgrade_noop (Fixture *f,
+    gconstpointer unused G_GNUC_UNUSED)
+{
+  Result result = { g_main_loop_new (NULL, FALSE), NULL, NULL, NULL };
+  TpHandle handle;
+  TpContact *contact;
+
+  g_test_bug ("41414");
+
+  /* Get a contact by handle */
+  handle = get_handle_with_no_caps (f, "test-upgrade-noop");
+  tp_connection_get_contacts_by_handle (f->client_conn,
+      1, &handle,
+      G_N_ELEMENTS (all_contact_features), all_contact_features,
+      by_handle_cb,
+      &result, finish, NULL);
+  g_main_loop_run (result.loop);
+  g_assert_no_error (result.error);
+
+  contact = g_object_ref (g_ptr_array_index (result.contacts, 0));
+  reset_result (&result);
+
+  /* Upgrade it, but it should already have all features */
+  make_the_connection_disappear (f);
+  tp_connection_upgrade_contacts (f->client_conn,
+      1, &contact,
+      G_N_ELEMENTS (all_contact_features), all_contact_features,
+      upgrade_cb,
+      &result, finish, NULL);
+  g_main_loop_run (result.loop);
+  g_assert_no_error (result.error);
+  reset_result (&f->result);
+
+  put_the_connection_back (f);
+
+  g_object_unref (contact);
+}
+
 typedef struct
 {
   gboolean alias_changed;
@@ -2884,6 +2937,7 @@
   ADD (no_features);
   ADD (features);
   ADD (upgrade);
+  ADD (upgrade_noop);
   ADD (by_id);
   ADD (avatar_requirements);
   ADD (avatar_data);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/tests/dbus/message-mixin.c 
new/telepathy-glib-0.15.7/tests/dbus/message-mixin.c
--- old/telepathy-glib-0.15.6/tests/dbus/message-mixin.c        2011-07-15 
15:42:19.000000000 +0200
+++ new/telepathy-glib-0.15.7/tests/dbus/message-mixin.c        2011-10-04 
16:54:54.000000000 +0200
@@ -1043,9 +1043,15 @@
   g_print ("\n\n==== Acknowledging one message ====\n");
 
     {
-      GArray *msgid = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1);
+      /* As a regression test for
+       * <https://bugs.freedesktop.org/show_bug.cgi?id=40523>, we include the
+       * ID of the message we want to ack twice. This used to cause a
+       * double-free.
+       */
+      GArray *msgid = g_array_sized_new (FALSE, FALSE, sizeof (guint), 2);
 
       g_array_append_val (msgid, last_received_id);
+      g_array_append_val (msgid, last_received_id);
 
       tp_cli_channel_type_text_run_acknowledge_pending_messages (chan, -1,
           msgid, &error, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/telepathy-glib-0.15.6/tests/dbus/text-channel.c 
new/telepathy-glib-0.15.7/tests/dbus/text-channel.c
--- old/telepathy-glib-0.15.6/tests/dbus/text-channel.c 2011-09-30 
12:56:51.000000000 +0200
+++ new/telepathy-glib-0.15.7/tests/dbus/text-channel.c 2011-10-04 
14:25:04.000000000 +0200
@@ -886,6 +886,43 @@
   g_assert (tp_contact_has_feature (sender, TP_CONTACT_FEATURE_ALIAS));
 }
 
+static void
+test_sent_with_no_sender (Test *test,
+    gconstpointer data G_GNUC_UNUSED)
+{
+  GPtrArray *parts;
+  TpContact *sender;
+
+  tp_tests_proxy_run_until_prepared (test->channel, NULL);
+
+  /* Simulate a message sent with no sender, it must fallback to
+   * connection's self-contact. Unfortunately we cannot use the message mixin
+   * because it force setting a sender, and we can't use TpCMMessage to create
+   * parts because it's kept private. So back to old school. */
+  parts = g_ptr_array_new_with_free_func ((GDestroyNotify) g_hash_table_unref);
+  g_ptr_array_add (parts, tp_asv_new (
+      "message-type", G_TYPE_UINT, TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL,
+      NULL));
+  g_ptr_array_add (parts, tp_asv_new (
+      "content-type", G_TYPE_STRING, "text/plain",
+      "content", G_TYPE_STRING, "bla bla bla",
+      NULL));
+
+  g_signal_connect (test->channel, "message-sent",
+      G_CALLBACK (message_sent_cb), test);
+
+  tp_svc_channel_interface_messages_emit_message_sent (test->chan_service,
+      parts, 0, "this-is-a-token");
+
+  g_main_loop_run (test->mainloop);
+  g_assert_no_error (test->error);
+
+  sender = tp_signalled_message_get_sender (test->sent_msg);
+  g_assert (sender == tp_connection_get_self_contact (test->connection));
+
+  g_ptr_array_unref (parts);
+}
+
 int
 main (int argc,
       char **argv)
@@ -917,6 +954,8 @@
       setup, test_pending_messages_with_no_sender_id, teardown);
   g_test_add ("/text-channel/sender-prepared", Test, NULL, setup,
       test_sender_prepared, teardown);
+  g_test_add ("/text-channel/sent-with-no-sender", Test, NULL, setup,
+      test_sent_with_no_sender, teardown);
 
   return g_test_run ();
 }

continue with "q"...



Remember to have fun...

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to