[Telepathy-commits] [telepathy-salut/master] Use struct sockaddr_storage for storage but always pass struct sockaddr* + size as parameters

Alban Crequy alban.crequy at collabora.co.uk
Thu Nov 6 09:48:01 PST 2008


---
 lib/gibber/gibber-bytestream-oob.c            |    2 +-
 lib/gibber/gibber-bytestream-oob.h            |    2 +-
 src/salut-avahi-contact.c                     |   16 ++++++++--------
 src/salut-bytestream-manager.c                |    4 ++--
 src/salut-contact-manager.c                   |   15 +++++++++------
 src/salut-contact-manager.h                   |    2 +-
 src/salut-contact.c                           |    5 +++--
 src/salut-contact.h                           |    5 +++--
 src/salut-xmpp-connection-manager.c           |    8 ++++----
 tests/check-gibber-listener.c                 |    2 +-
 tests/check-gibber-xmpp-connection-listener.c |    2 +-
 11 files changed, 34 insertions(+), 29 deletions(-)

diff --git a/lib/gibber/gibber-bytestream-oob.c b/lib/gibber/gibber-bytestream-oob.c
index d608da5..f2b00eb 100644
--- a/lib/gibber/gibber-bytestream-oob.c
+++ b/lib/gibber/gibber-bytestream-oob.c
@@ -955,7 +955,7 @@ make_oob_init_iq (const gchar *from,
 static void
 new_connection_cb (GibberListener *listener,
                    GibberTransport *transport,
-                   struct sockaddr_storage *addr,
+                   struct sockaddr *addr,
                    guint size,
                    gpointer user_data)
 {
diff --git a/lib/gibber/gibber-bytestream-oob.h b/lib/gibber/gibber-bytestream-oob.h
index 8834d92..9362b99 100644
--- a/lib/gibber/gibber-bytestream-oob.h
+++ b/lib/gibber/gibber-bytestream-oob.h
@@ -32,7 +32,7 @@ typedef struct _GibberBytestreamOOB GibberBytestreamOOB;
 typedef struct _GibberBytestreamOOBClass GibberBytestreamOOBClass;
 
 typedef gboolean (* GibberBytestreamOOBCheckAddrFunc) (
-    GibberBytestreamOOB *bytestream, struct sockaddr_storage *addr,
+    GibberBytestreamOOB *bytestream, struct sockaddr *addr,
     socklen_t addrlen, gpointer user_data);
 
 
diff --git a/src/salut-avahi-contact.c b/src/salut-avahi-contact.c
index 4732a7c..10b1723 100644
--- a/src/salut-avahi-contact.c
+++ b/src/salut-avahi-contact.c
@@ -146,7 +146,7 @@ static void
 _avahi_address_to_sockaddr (AvahiAddress *address,
                             guint16 port,
                             AvahiIfIndex index,
-                            struct sockaddr_storage *sockaddr)
+                            struct sockaddr *sockaddr)
 {
   switch (address->proto)
     {
@@ -188,7 +188,7 @@ _add_address (GaServiceResolver *resolver,
   if (ga_service_resolver_get_address (resolver, &address, &port))
     {
       _avahi_address_to_sockaddr (&address, port, ifindex,
-          &(s_address.address));
+          (struct sockaddr *) &s_address.address);
       g_array_append_val (addresses, s_address);
     }
 }
@@ -209,9 +209,9 @@ salut_avahi_contact_get_addresses (SalutContact *contact)
 
 static gint
 _compare_address (GaServiceResolver *resolver,
-                  struct sockaddr_storage *addr_b)
+                  struct sockaddr *addr_b)
 {
-  struct sockaddr_storage addr_a;
+  struct sockaddr addr_a;
   AvahiIfIndex ifindex;
   AvahiAddress address;
   uint16_t port;
@@ -222,11 +222,10 @@ _compare_address (GaServiceResolver *resolver,
 
   _avahi_address_to_sockaddr (&address, port, ifindex, &addr_a);
 
-  if ( ((struct sockaddr *) &addr_a)->sa_family
-       != ((struct sockaddr *) addr_b)->sa_family)
+  if (addr_a.sa_family != addr_b->sa_family)
     return -1;
 
-  switch (((struct sockaddr *) &addr_a)->sa_family)
+  switch (addr_a.sa_family)
     {
       case AF_INET:
         {
@@ -250,7 +249,8 @@ _compare_address (GaServiceResolver *resolver,
 
 static gboolean
 salut_avahi_contact_has_address (SalutContact *contact,
-                                 struct sockaddr_storage *address)
+                                 struct sockaddr *address,
+                                 guint size)
 {
   SalutAvahiContact *self = SALUT_AVAHI_CONTACT (contact);
   SalutAvahiContactPrivate *priv = SALUT_AVAHI_CONTACT_GET_PRIVATE (self);
diff --git a/src/salut-bytestream-manager.c b/src/salut-bytestream-manager.c
index a1f1575..6b0f117 100644
--- a/src/salut-bytestream-manager.c
+++ b/src/salut-bytestream-manager.c
@@ -710,7 +710,7 @@ si_request_reply_filter (SalutXmppConnectionManager *manager,
 
 static gboolean
 check_bytestream_oob_peer_addr (GibberBytestreamOOB *bytestream,
-                                struct sockaddr_storage *addr,
+                                struct sockaddr *addr,
                                 socklen_t addrlen,
                                 gpointer user_data)
 {
@@ -740,7 +740,7 @@ check_bytestream_oob_peer_addr (GibberBytestreamOOB *bytestream,
   if (contact == NULL)
     return FALSE;
 
-  result = salut_contact_has_address (contact, addr);
+  result = salut_contact_has_address (contact, addr, addrlen);
   g_object_unref (contact);
 
   return result;
diff --git a/src/salut-contact-manager.c b/src/salut-contact-manager.c
index 667cd39..0b7556f 100644
--- a/src/salut-contact-manager.c
+++ b/src/salut-contact-manager.c
@@ -666,13 +666,15 @@ salut_contact_manager_get_contact (SalutContactManager *mgr, TpHandle handle)
 }
 
 static void
-_find_by_address (gpointer key, gpointer value, gpointer user_data) {
-  struct sockaddr_storage *address =
-    (struct sockaddr_storage *)((gpointer *)user_data)[0];
+_find_by_address (gpointer key, gpointer value, gpointer user_data)
+{
+  struct sockaddr *address =
+    (struct sockaddr *)((gpointer *)user_data)[0];
   GList **list = (GList **)((gpointer *)user_data)[1];
+  guint size = GPOINTER_TO_UINT (((gpointer *)user_data)[2]);
   SalutContact *contact = SALUT_CONTACT (value);
 
-  if (salut_contact_has_address (contact, address)) {
+  if (salut_contact_has_address (contact, address, size)) {
     g_object_ref (contact);
     *list = g_list_append (*list, contact);
   }
@@ -681,13 +683,14 @@ _find_by_address (gpointer key, gpointer value, gpointer user_data) {
 /* FIXME function name is just too long */
 GList *
 salut_contact_manager_find_contacts_by_address (SalutContactManager *mgr,
-    struct sockaddr_storage *address)
+    struct sockaddr *address, guint size)
 {
   GList *list = NULL;
-  gpointer data[2];
+  gpointer data[3];
 
   data[0] = address;
   data[1] = &list;
+  data[2] = GUINT_TO_POINTER (size);
   g_hash_table_foreach (mgr->contacts, _find_by_address, data);
   return list;
 }
diff --git a/src/salut-contact-manager.h b/src/salut-contact-manager.h
index 53ec5bf..3123ba8 100644
--- a/src/salut-contact-manager.h
+++ b/src/salut-contact-manager.h
@@ -77,7 +77,7 @@ salut_contact_manager_get_contact (SalutContactManager *mgr, TpHandle handle);
 
 GList *
 salut_contact_manager_find_contacts_by_address (SalutContactManager *mgr,
-    struct sockaddr_storage *address);
+    struct sockaddr *address, guint size);
 
 SalutContact * salut_contact_manager_ensure_contact (SalutContactManager *mgr,
     const gchar *name);
diff --git a/src/salut-contact.c b/src/salut-contact.c
index 8256782..dd96b22 100644
--- a/src/salut-contact.c
+++ b/src/salut-contact.c
@@ -387,9 +387,10 @@ salut_contact_get_addresses (SalutContact *self)
 
 gboolean
 salut_contact_has_address (SalutContact *self,
-                           struct sockaddr_storage *address)
+                           struct sockaddr *address,
+                           guint size)
 {
-  return SALUT_CONTACT_GET_CLASS (self)->has_address (self, address);
+  return SALUT_CONTACT_GET_CLASS (self)->has_address (self, address, size);
 }
 
 const gchar *
diff --git a/src/salut-contact.h b/src/salut-contact.h
index df4b5bd..13ac1df 100644
--- a/src/salut-contact.h
+++ b/src/salut-contact.h
@@ -53,7 +53,7 @@ struct _SalutContactClass {
     /* public abstract methods */
     GArray * (*get_addresses) (SalutContact *contact);
     gboolean (*has_address) (SalutContact *contact,
-        struct sockaddr_storage *address);
+        struct sockaddr *address, guint size);
 
     /* private abstract methods */
     void (*retrieve_avatar) (SalutContact *contact);
@@ -104,7 +104,8 @@ typedef struct {
 GArray * salut_contact_get_addresses (SalutContact *contact);
 
 gboolean salut_contact_has_address (SalutContact *contact,
-                                   struct sockaddr_storage *address);
+                                    struct sockaddr *address,
+                                    guint size);
 const gchar * salut_contact_get_alias (SalutContact *contact);
 
 typedef void (*salut_contact_get_avatar_callback)(SalutContact *contact,
diff --git a/src/salut-xmpp-connection-manager.c b/src/salut-xmpp-connection-manager.c
index a01d76b..406c847 100644
--- a/src/salut-xmpp-connection-manager.c
+++ b/src/salut-xmpp-connection-manager.c
@@ -46,7 +46,7 @@ G_DEFINE_TYPE (SalutXmppConnectionManager, salut_xmpp_connection_manager, \
 
 static void
 new_connection_cb (GibberXmppConnectionListener *listener,
-    GibberXmppConnection *connection, struct sockaddr_storage *addr,
+    GibberXmppConnection *connection, struct sockaddr *addr,
     guint size, gpointer user_data);
 static gboolean
 create_new_outgoing_connection (SalutXmppConnectionManager *self,
@@ -631,7 +631,7 @@ incoming_connection_found_contact (SalutXmppConnectionManager *self,
       goto error;
     }
 
-  if (!salut_contact_has_address (contact, &addr))
+  if (!salut_contact_has_address (contact, (struct sockaddr *) &addr, size))
     {
       DEBUG ("Contact %s doesn't have that address", contact->name);
       ret = FALSE;
@@ -798,7 +798,7 @@ incoming_pending_connection_parse_error_cb (GibberXmppConnection *conn,
 static void
 new_connection_cb (GibberXmppConnectionListener *listener,
                    GibberXmppConnection *connection,
-                   struct sockaddr_storage *addr,
+                   struct sockaddr *addr,
                    guint size,
                    gpointer user_data)
 {
@@ -810,7 +810,7 @@ new_connection_cb (GibberXmppConnectionListener *listener,
   DEBUG("Handling new incoming connection");
 
   contacts = salut_contact_manager_find_contacts_by_address (
-      priv->contact_manager, addr);
+      priv->contact_manager, addr, size);
   if (contacts == NULL)
     {
       DEBUG ("Couldn't find a contact for the incoming connection");
diff --git a/tests/check-gibber-listener.c b/tests/check-gibber-listener.c
index 3e26ff3..24925d3 100644
--- a/tests/check-gibber-listener.c
+++ b/tests/check-gibber-listener.c
@@ -42,7 +42,7 @@ gboolean signalled;
 static void
 new_connection_cb (GibberListener *listener,
                    GibberTransport *connection,
-                   struct sockaddr_storage *addr,
+                   struct sockaddr *addr,
                    guint size,
                    GMainLoop *loop)
 {
diff --git a/tests/check-gibber-xmpp-connection-listener.c b/tests/check-gibber-xmpp-connection-listener.c
index 28fd65e..c3df499 100644
--- a/tests/check-gibber-xmpp-connection-listener.c
+++ b/tests/check-gibber-xmpp-connection-listener.c
@@ -40,7 +40,7 @@ gboolean got_connection;
 static void
 new_connection_cb (GibberXmppConnectionListener *listener,
                    GibberXmppConnection *connection,
-                   struct sockaddr_storage *addr,
+                   struct sockaddr *addr,
                    guint size,
                    gpointer user_data)
 {
-- 
1.5.6.5




More information about the Telepathy-commits mailing list