Find friend by port.
[cascardo/f2fchat.git] / friend.c
index e3d987f..fd79643 100644 (file)
--- a/friend.c
+++ b/friend.c
@@ -62,12 +62,13 @@ struct cache {
 
 static struct cache *ucache;
 
-struct friend *friend_get_by_address(GInetAddress *address)
+struct friend *friend_get_by_address(GInetAddress *address, uint16_t port)
 {
        GList *l;
        for (l = g_list_first(ucache->friends); l != NULL; l = g_list_next(l)) {
                struct friend *friend = l->data;
-               if (g_inet_address_equal(g_inet_socket_address_get_address(friend->saddr), address))
+               if (g_inet_address_equal(g_inet_socket_address_get_address(friend->saddr), address) &&
+                   friend->port == port)
                        return friend;
        }
        return NULL;
@@ -113,6 +114,7 @@ int cache_add_friend(struct cache *cache, char *name, char *address, uint16_t po
        friend->saddr = G_INET_SOCKET_ADDRESS(g_inet_socket_address_new(addr, friend->port));
        g_object_unref(addr);
        cache->friends = g_list_append(cache->friends, friend);
+       ping(friend);
        return 0;
 }