[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