[Bug 47429] Support SalutContact and SautContact-manager with Bonjour backend

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Mar 23 01:29:44 CET 2012


https://bugs.freedesktop.org/show_bug.cgi?id=47429

--- Comment #6 from Siraj Razick <siraj.razick at collabora.co.uk> 2012-03-22 17:29:44 PDT ---
Thanks for you the review
(In reply to comment #3)
> > We need to pass published_name at host when registering for the service current
> > code passes NULL, which lets mdns choose it's name.
> 
> OOI what does mdns choose if you pass NULL?

just the host name. 

reset i'll fix.
> 
> > + priv->svc_ref_table = NULL;
> > + priv->svc_source_table = NULL;
> 
> Huh? These are set to NULL in _init and set to real values in _watch_svc_ref.
> If _watch_svc_ref is never called then g_hash_table_foreach_remove,
> g_hash_table_remove_all, and g_hash_table_destroy will be all called on NULL.
> Creating two hash tables in the discovery client isn't so costly; just create
> them in _init then you can remove the checks in _watch_svc_ref and
> _drop_svc_ref and not assert in said case.
> 
> > + g_hash_table_remove (priv->svc_source_table, channel);
> > +
> > + return TRUE;
> 
> You're calling g_hash_table_foreach_remove which takes a GHRFunc which is
> defined to  return "TRUE if the key/value pair should be removed from the
> GHashTable." However, just before returning TRUE you remove the key/value pair
> from the table anyway..?
> 
> In fact, why don't you just make this the value destroy function of the
> svc_source_table GHashTable? It would simplify this code a lot.
> 
> > + priv->svc_source_table = g_hash_table_new_full (g_direct_hash,
> > +     g_direct_equal,NULL, NULL);
> 
> Missing space.
> 
> > + priv->discovery_client = g_value_get_object (value);
> > + g_object_ref (priv->discovery_client);
> 
> g_value_dup_object
> 
> > + socket_address = g_inet_socket_address_new (addr, port);
> > + g_object_ref (addr);
> 
> Why do you suddenly ref addr? The equivalent code in SalutAvahiContact which
> you've otherwise used as a base does this:
> 
>     socket_address = g_inet_socket_address_new (addr, port);
>     g_object_unref (addr);
> 
> so I'm confused?
> 
> > +     g_array_append_val (addresses, s_address);
> > +    }
> > +}
> 
> Indentation.
> 
> > + addresses =
> > +   g_array_sized_new (TRUE, TRUE, sizeof (salut_contact_address_t), 0);
> 
> It seems odd to use sized_new when you just use 0 and you /could/ find out the
> exact size if you wanted? Given finding the size is O(n) perhaps it's not worth
> it though; what do you think? If you used GQueue you could just use .length
> which would be even nicer.
> 
> Every time a GQueue is used I cheer!
> 
> > + resolvers_left = g_slist_length (priv->resolvers);
> > +
> > + g_free (ctx);
> > +
> > + if (resolvers_left == 0)
> > +   salut_contact_lost (SALUT_CONTACT (self));
> 
> g_[s]list_length(list) == 0 if and only if list == NULL...
> 
> > + ctx = g_new0 (SalutBonjourResolveCtx, 1);
> 
> Slice allocating this stuff is preferred these days; use g_slice_new0 and
> g_slice_free.
> 
> > + priv->resolvers = g_slist_prepend (priv->resolvers, ctx);
> 
> I really hate this "prepend to a list because it's quicker than appending"
> thing. Yes, turn priv->resolvers into a GQueue.
> 
> 
> > + if (error_type != kDNSServiceErr_NoError)
> > +   {
> > +     DEBUG ("Resolver failed witih : (%d)", error_type);
> > +     return ;
> > +   }
> 
> *with
> 
> There's an extra space after "return".
> 
> Should we not still thaw the salut contact here?
> 
> + if (error_type !=kDNSServiceErr_NoError)
> 
> Missing space.
> 
> > + else if (!salut_bonjour_contact_has_services (SALUT_BONJOUR_CONTACT
> > +     (contact)))
> > +   {
> > +     g_object_ref (contact);
> > +   }
> 
> but later on:
> 
> + if (salut_bonjour_contact_has_services (SALUT_BONJOUR_CONTACT (contact)))
> +   {
> +     /* We reffed this contact as it has services */
> +     g_object_unref (contact);
> +   }
> 
> So this reffing with services confuses me?

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA Contact for the bug.



More information about the telepathy-bugs mailing list