Mercurial > pidgin
changeset 15307:745f090c1549
[gaim-migrate @ 18098]
Patch 1609805 from Anders Kaseorg, who writes:
This patch fixes two bugs when a user "enters" a Zephyr "chat room":
- The IP address was displayed incorrectly.
- The "entered the room" message was displayed after the message.
Without patch:
(11:20:42 PM) andersk test: First message.
(11:20:42 PM) Anders Kaseorg [18.-13.2.92] entered the room.
(11:20:47 PM) andersk test: Second message.
With patch:
(11:20:42 PM) Anders Kaseorg [18.243.2.92] entered the room.
(11:20:42 PM) andersk test: First message.
(11:20:47 PM) andersk test: Second message.
committer: Tailor Script <tailor@pidgin.im>
author | Evan Schoenberg <evan.s@dreskin.net> |
---|---|
date | Wed, 10 Jan 2007 03:13:53 +0000 |
parents | e9db26a103eb |
children | c2903a3768b5 |
files | libgaim/protocols/zephyr/zephyr.c |
diffstat | 1 files changed, 5 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/libgaim/protocols/zephyr/zephyr.c Tue Jan 09 21:16:58 2007 +0000 +++ b/libgaim/protocols/zephyr/zephyr.c Wed Jan 10 03:13:53 2007 +0000 @@ -931,24 +931,19 @@ send_inst_utf8 = "malformed instance"; } - serv_got_chat_in(gc, zt2->id, send_inst_utf8, 0, buf3, time(NULL)); - g_free(send_inst); gconv1 = gaim_find_conversation_with_account(GAIM_CONV_TYPE_CHAT, zt2->name, gc->account); gcc = gaim_conversation_get_chat_data(gconv1); if (!gaim_conv_chat_find_user(gcc, sendertmp)) { - /* force interpretation in network byte order */ - unsigned char *addrs = (unsigned char *)&(notice.z_sender_addr.s_addr); - gchar* ipaddr = g_strdup_printf("%hhd.%hhd.%hhd.%hhd", (unsigned char)addrs[0], - (unsigned char)addrs[1], (unsigned char)addrs[2], - (unsigned char) addrs[3]); - + gchar ipaddr[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, ¬ice.z_sender_addr.s_addr, ipaddr, sizeof(ipaddr)); + gaim_conv_chat_add_user(gcc, sendertmp, ipaddr, GAIM_CBFLAGS_NONE, TRUE); - g_free(ipaddr); /* fix memory leak? */ - } g_free(sendertmp); + serv_got_chat_in(gc, zt2->id, send_inst_utf8, 0, buf3, time(NULL)); + g_free(send_inst); g_free(send_inst_utf8); free_triple(zt1);