X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Ff2fchat.git;a=blobdiff_plain;f=message.c;fp=message.c;h=8c6dafd43aab5fe6cfead0ba9620eb4e73ce07c0;hp=25b516025f976a7376a079e285e23c4300580597;hb=f7c4d6ccc1fd3c452481a2d085486f8dec3860fb;hpb=123b3a7a3989a0f040da5cc16f997ff5961fe593 diff --git a/message.c b/message.c index 25b5160..8c6dafd 100644 --- a/message.c +++ b/message.c @@ -26,6 +26,7 @@ gboolean ping_timeout(gpointer data) { struct friend *friend = data; + friend_timeout(friend); return G_SOURCE_REMOVE; } @@ -58,7 +59,7 @@ gboolean message_incoming(GIOChannel *channel, GIOCondition cond, gpointer data) friend = friend_get_by_address(iaddress, port); if (friend) { printf("got message from %s\n", friend_get_name(friend)); - g_source_remove_by_user_data(friend); + friend_got_message(friend, buffer, len); } else { printf("could not find friend from address %s\n", g_inet_address_to_string(iaddress)); } @@ -77,7 +78,16 @@ int message_init(GSocket *sock) int ping(struct friend *friend) { + int err; char ping[5] = "PING"; - friend_send_message(friend, ping, 4); - g_timeout_add(2000, ping_timeout, friend); + err = friend_send_message(friend, ping, 4); + if (!err) + g_timeout_add(2000, ping_timeout, friend); + return err; +} + +int pong(struct friend *friend) +{ + char pong[5] = "PONG"; + return friend_send_message(friend, pong, 4); }