You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(106) |
Oct
(334) |
Nov
(246) |
Dec
(145) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(42) |
Feb
(53) |
Mar
(232) |
Apr
(109) |
May
(137) |
Jun
(63) |
Jul
(26) |
Aug
(263) |
Sep
(193) |
Oct
(507) |
Nov
(440) |
Dec
(241) |
2003 |
Jan
(567) |
Feb
(195) |
Mar
(504) |
Apr
(481) |
May
(524) |
Jun
(522) |
Jul
(594) |
Aug
(502) |
Sep
(643) |
Oct
(508) |
Nov
(430) |
Dec
(377) |
2004 |
Jan
(361) |
Feb
(251) |
Mar
(219) |
Apr
(499) |
May
(461) |
Jun
(419) |
Jul
(314) |
Aug
(519) |
Sep
(416) |
Oct
(247) |
Nov
(305) |
Dec
(382) |
2005 |
Jan
(267) |
Feb
(282) |
Mar
(327) |
Apr
(338) |
May
(189) |
Jun
(400) |
Jul
(462) |
Aug
(530) |
Sep
(316) |
Oct
(523) |
Nov
(481) |
Dec
(650) |
2006 |
Jan
(536) |
Feb
(361) |
Mar
(287) |
Apr
(146) |
May
(101) |
Jun
(169) |
Jul
(221) |
Aug
(498) |
Sep
(300) |
Oct
(236) |
Nov
(209) |
Dec
(205) |
2007 |
Jan
(30) |
Feb
(23) |
Mar
(26) |
Apr
(15) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <ev...@us...> - 2006-12-26 19:22:04
|
Revision: 18058 http://svn.sourceforge.net/gaim/?rev=18058&view=rev Author: evands Date: 2006-12-26 11:22:03 -0800 (Tue, 26 Dec 2006) Log Message: ----------- * Nathan and I decided that there's no reason for having the if (value != old_value) checks in the setters; it's a convention which makes sense in my 'native' Objective-C but is silly here. * Fixed a return in g_return_val_if_fail(): gaim_notify_user_info_entry_get_type() returns a GaimNotifyUserInfoEntryType, not a pointer. Modified Paths: -------------- trunk/libgaim/notify.c Modified: trunk/libgaim/notify.c =================================================================== --- trunk/libgaim/notify.c 2006-12-26 03:39:37 UTC (rev 18057) +++ trunk/libgaim/notify.c 2006-12-26 19:22:03 UTC (rev 18058) @@ -585,11 +585,8 @@ { g_return_if_fail(user_info_entry != NULL); - if (label != user_info_entry->label) - { - g_free(user_info_entry->label); - user_info_entry->label = g_strdup(label); - } + g_free(user_info_entry->label); + user_info_entry->label = g_strdup(label); } gchar * @@ -605,18 +602,15 @@ { g_return_if_fail(user_info_entry != NULL); - if (value != user_info_entry->value) - { - g_free(user_info_entry->value); - user_info_entry->value = g_strdup(value); - } + g_free(user_info_entry->value); + user_info_entry->value = g_strdup(value); } GaimNotifyUserInfoEntryType gaim_notify_user_info_entry_get_type(GaimNotifyUserInfoEntry *user_info_entry) { - g_return_val_if_fail(user_info_entry != NULL, NULL); - + g_return_val_if_fail(user_info_entry != NULL, GAIM_NOTIFY_USER_INFO_ENTRY_PAIR); + return user_info_entry->type; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-26 03:39:39
|
Revision: 18057 http://svn.sourceforge.net/gaim/?rev=18057&view=rev Author: evands Date: 2006-12-25 19:39:37 -0800 (Mon, 25 Dec 2006) Log Message: ----------- Sorry for the commit spam; I'm trying to fix the problems reported by Ka-Hing Cheung on gaim-devel without access to a machine on which I can compile Gaim at present. Modified Paths: -------------- trunk/libgaim/notify.c Modified: trunk/libgaim/notify.c =================================================================== --- trunk/libgaim/notify.c 2006-12-26 03:15:08 UTC (rev 18056) +++ trunk/libgaim/notify.c 2006-12-26 03:39:37 UTC (rev 18057) @@ -647,10 +647,10 @@ } void -gaim_notify_user_info_remove_entry(GaimNotifyUserInfo *user_info, GaimNotifyUserInfoEntry *user_info_entry) +gaim_notify_user_info_remove_entry(GaimNotifyUserInfo *user_info, GaimNotifyUserInfoEntry *entry) { g_return_if_fail(user_info != NULL); - g_return_if_fail(user_info_entry != NULL); + g_return_if_fail(entry != NULL); user_info->user_info_entries = g_list_remove(user_info->user_info_entries, entry); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-26 03:15:09
|
Revision: 18056 http://svn.sourceforge.net/gaim/?rev=18056&view=rev Author: evands Date: 2006-12-25 19:15:08 -0800 (Mon, 25 Dec 2006) Log Message: ----------- Fix a problem with [18053] and add gaim_notify_user_info_remove_entry() Modified Paths: -------------- trunk/libgaim/notify.c trunk/libgaim/notify.h Modified: trunk/libgaim/notify.c =================================================================== --- trunk/libgaim/notify.c 2006-12-26 02:47:13 UTC (rev 18055) +++ trunk/libgaim/notify.c 2006-12-26 03:15:08 UTC (rev 18056) @@ -475,7 +475,7 @@ return NULL; } -static GaimNotifyUserInfoEntry * +GaimNotifyUserInfoEntry * gaim_notify_user_info_entry_new(const char *label, const char *value) { GaimNotifyUserInfoEntry *user_info_entry; @@ -621,7 +621,7 @@ } void -gaim_notify_user_info_entry_set_value(GaimNotifyUserInfoEntry *user_info_entry, GaimNotifyUserInfoEntryType type) +gaim_notify_user_info_entry_set_type(GaimNotifyUserInfoEntry *user_info_entry, GaimNotifyUserInfoEntryType type) { g_return_if_fail(user_info_entry != NULL); @@ -647,6 +647,15 @@ } void +gaim_notify_user_info_remove_entry(GaimNotifyUserInfo *user_info, GaimNotifyUserInfoEntry *user_info_entry) +{ + g_return_if_fail(user_info != NULL); + g_return_if_fail(user_info_entry != NULL); + + user_info->user_info_entries = g_list_remove(user_info->user_info_entries, entry); +} + +void gaim_notify_user_info_add_section_header(GaimNotifyUserInfo *user_info, const char *label) { GaimNotifyUserInfoEntry *entry; Modified: trunk/libgaim/notify.h =================================================================== --- trunk/libgaim/notify.h 2006-12-26 02:47:13 UTC (rev 18055) +++ trunk/libgaim/notify.h 2006-12-26 03:15:08 UTC (rev 18056) @@ -448,6 +448,8 @@ * GaimNotifyUserInfoEntry are allowed in the list. If a GaimNotifyUserInfoEntry item is added to the list, * it should not be g_free()'d by the caller; GaimNotifyUserInfo will g_free it when destroyed. * + * To remove a GaimNotifyUserInfoEntry, use gaim_notify_user_info_remove_entry(). Do not use the GList directly. + * * @param user_info The GaimNotifyUserInfo * * @result A GList of GaimNotifyUserInfoEntry objects @@ -463,7 +465,8 @@ char *gaim_notify_user_info_get_text_with_newline(GaimNotifyUserInfo *user_info, const char *newline); /** - * Add a label/value pair to a GaimNotifyUserInfo object. GaimNotifyUserInfo keeps track of the order in which pairs are added. + * Add a label/value pair to a GaimNotifyUserInfo object. + * GaimNotifyUserInfo keeps track of the order in which pairs are added. * * @param user_info The GaimNotifyUserInfo * @param label A label, which for example might be displayed by a UI with a colon after it ("Status:"). Do not include a colon. @@ -487,6 +490,13 @@ void gaim_notify_user_info_prepend_pair(GaimNotifyUserInfo *user_info, const char *label, const char *value); /** + * Remove a GaimNotifyUserInfoEntry from a GaimNotifyUserInfo object + * + * @param user_info The GaimNotifyUserInfo + * @param user_info_entry The GaimNotifyUserInfoEntry + */ +void gaim_notify_user_info_remove_entry(GaimNotifyUserInfo *user_info, GaimNotifyUserInfoEntry *user_info_entry); +/** * Create a new GaimNotifyUserInfoEntry * * If added to a GaimNotifyUserInfo object, this should not be free()'d, as GaimNotifyUserInfo will do so This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-26 02:47:12
|
Revision: 18055 http://svn.sourceforge.net/gaim/?rev=18055&view=rev Author: evands Date: 2006-12-25 18:47:13 -0800 (Mon, 25 Dec 2006) Log Message: ----------- doxygen documentation update for the displaying-userinfo signal Modified Paths: -------------- trunk/doc/notify-signals.dox Modified: trunk/doc/notify-signals.dox =================================================================== --- trunk/doc/notify-signals.dox 2006-12-26 02:44:15 UTC (rev 18054) +++ trunk/doc/notify-signals.dox 2006-12-26 02:47:13 UTC (rev 18055) @@ -6,17 +6,16 @@ @signaldef displaying-userinfo @signalproto -void (*displaying_userinfo)(GaimAccount *account, const char *who, char **infotext); +void (*displaying_userinfo)(GaimAccount *account, const char *who, GaimNotifyUserInfo *user_info); @endsignalproto @signaldesc Emitted before userinfo is handed to the UI to display. - @a infotext is a pointer to a string, so a plugin can replace the text that - will be displayed. + @a user_info can be manipulated via the GaimNotifyUserInfo API in notify.c. @note - Make sure to free @a *infotext before you replace it! - @param account The account on which the info was obtained. - @param who The screen name of the user whose info is to be displayed. - @param infotext A pointer to the userinfo text to be displayed. + If adding a GaimNotifyUserInfoEntry, be sure not to free it -- GaimNotifyUserInfo assumes responsibility for its objects. + @param account The account on which the info was obtained. + @param who The screen name of the user whose info is to be displayed. + @param user_info The information to be displayed, as GaimNotifyUserInfoEntry objects @endsignaldef */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-26 02:44:18
|
Revision: 18054 http://svn.sourceforge.net/gaim/?rev=18054&view=rev Author: evands Date: 2006-12-25 18:44:15 -0800 (Mon, 25 Dec 2006) Log Message: ----------- Added GAIM_SUBTYPE_USERINFO subtype for use by the displaying-userinfo signal in passing a GaimNotifyUserInfo Modified Paths: -------------- trunk/libgaim/value.h Modified: trunk/libgaim/value.h =================================================================== --- trunk/libgaim/value.h 2006-12-26 02:42:54 UTC (rev 18053) +++ trunk/libgaim/value.h 2006-12-26 02:44:15 UTC (rev 18054) @@ -75,7 +75,8 @@ GAIM_SUBTYPE_LOG, GAIM_SUBTYPE_XFER, GAIM_SUBTYPE_SAVEDSTATUS, - GAIM_SUBTYPE_XMLNODE + GAIM_SUBTYPE_XMLNODE, + GAIM_SUBTYPE_USERINFO } GaimSubType; /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-26 02:42:54
|
Revision: 18053 http://svn.sourceforge.net/gaim/?rev=18053&view=rev Author: evands Date: 2006-12-25 18:42:54 -0800 (Mon, 25 Dec 2006) Log Message: ----------- Added setters and manipulators for GaimNotifyUserInfo and GaimNotifyUserInfoEntry, and fixed the declared parameters to the 'displaying-userinfo' signal Modified Paths: -------------- trunk/libgaim/notify.c trunk/libgaim/notify.h Modified: trunk/libgaim/notify.c =================================================================== --- trunk/libgaim/notify.c 2006-12-26 02:01:15 UTC (rev 18052) +++ trunk/libgaim/notify.c 2006-12-26 02:42:54 UTC (rev 18053) @@ -580,6 +580,18 @@ return user_info_entry->label; } +void +gaim_notify_user_info_entry_set_label(GaimNotifyUserInfoEntry *user_info_entry, const char *label) +{ + g_return_if_fail(user_info_entry != NULL); + + if (label != user_info_entry->label) + { + g_free(user_info_entry->label); + user_info_entry->label = g_strdup(label); + } +} + gchar * gaim_notify_user_info_entry_get_value(GaimNotifyUserInfoEntry *user_info_entry) { @@ -589,6 +601,34 @@ } void +gaim_notify_user_info_entry_set_value(GaimNotifyUserInfoEntry *user_info_entry, const char *value) +{ + g_return_if_fail(user_info_entry != NULL); + + if (value != user_info_entry->value) + { + g_free(user_info_entry->value); + user_info_entry->value = g_strdup(value); + } +} + +GaimNotifyUserInfoEntryType +gaim_notify_user_info_entry_get_type(GaimNotifyUserInfoEntry *user_info_entry) +{ + g_return_val_if_fail(user_info_entry != NULL, NULL); + + return user_info_entry->type; +} + +void +gaim_notify_user_info_entry_set_value(GaimNotifyUserInfoEntry *user_info_entry, GaimNotifyUserInfoEntryType type) +{ + g_return_if_fail(user_info_entry != NULL); + + user_info_entry->type = type; +} + +void gaim_notify_user_info_add_pair(GaimNotifyUserInfo *user_info, const char *label, const char *value) { GaimNotifyUserInfoEntry *entry; @@ -755,7 +795,8 @@ gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_ACCOUNT), gaim_value_new(GAIM_TYPE_STRING), - gaim_value_new_outgoing(GAIM_TYPE_STRING)); + gaim_value_new(GAIM_TYPE_SUBTYPE, + GAIM_SUBTYPE_USERINFO)); } void Modified: trunk/libgaim/notify.h =================================================================== --- trunk/libgaim/notify.h 2006-12-26 02:01:15 UTC (rev 18052) +++ trunk/libgaim/notify.h 2006-12-26 02:42:54 UTC (rev 18053) @@ -444,6 +444,10 @@ /** * Retrieve the array of GaimNotifyUserInfoEntry objects from a GaimNotifyUserInfo * + * This GList may be manipulated directly with normal GList functions such as g_list_insert(). Only + * GaimNotifyUserInfoEntry are allowed in the list. If a GaimNotifyUserInfoEntry item is added to the list, + * it should not be g_free()'d by the caller; GaimNotifyUserInfo will g_free it when destroyed. + * * @param user_info The GaimNotifyUserInfo * * @result A GList of GaimNotifyUserInfoEntry objects @@ -483,6 +487,23 @@ void gaim_notify_user_info_prepend_pair(GaimNotifyUserInfo *user_info, const char *label, const char *value); /** + * Create a new GaimNotifyUserInfoEntry + * + * If added to a GaimNotifyUserInfo object, this should not be free()'d, as GaimNotifyUserInfo will do so + * when destroyed. gaim_notify_user_info_add_pair() and gaim_notify_user_info_prepend_pair() are convenience + * methods for creating entries and adding them to a GaimNotifyUserInfo. + * + * @param label A label, which for example might be displayed by a UI with a colon after it ("Status:"). Do not include a colon. + * If NULL, value will be displayed without a label. + * @param value The value, which might be displayed by a UI after the label. + * If NULL, label will still be displayed; the UI should then treat label as independent + * and not include a colon if it would otherwise. + * + * @result A new GaimNotifyUserInfoEntry + */ +GaimNotifyUserInfoEntry *gaim_notify_user_info_entry_new(const char *label, const char *value); + +/** * Add a section break. A UI might display this as a horizontal line. * * @param user_info The GaimNotifyUserInfo @@ -512,6 +533,14 @@ gchar *gaim_notify_user_info_entry_get_label(GaimNotifyUserInfoEntry *user_info_entry); /** + * Set the label for a GaimNotifyUserInfoEntry + * + * @param user_info_entry The GaimNotifyUserInfoEntry + * @param label The label + */ +void gaim_notify_user_info_entry_set_label(GaimNotifyUserInfoEntry *user_info_entry, const char *label); + +/** * Get the value for a GaimNotifyUserInfoEntry * * @param user_info_entry The GaimNotifyUserInfoEntry @@ -521,6 +550,33 @@ gchar *gaim_notify_user_info_entry_get_value(GaimNotifyUserInfoEntry *user_info_entry); /** + * Set the value for a GaimNotifyUserInfoEntry + * + * @param user_info_entry The GaimNotifyUserInfoEntry + * @param value The value + */ +void gaim_notify_user_info_entry_set_value(GaimNotifyUserInfoEntry *user_info_entry, const char *value); + + +/** + * Get the type of a GaimNotifyUserInfoEntry + * + * @param user_info_entry The GaimNotifyUserInfoEntry + * + * @result The GaimNotifyUserInfoEntryType + */ +GaimNotifyUserInfoEntryType gaim_notify_user_info_entry_get_type(GaimNotifyUserInfoEntry *user_info_entry); + +/** + * Set the type of a GaimNotifyUserInfoEntry + * + * @param user_info_entry The GaimNotifyUserInfoEntry + * @param The GaimNotifyUserInfoEntryType + */ +void gaim_notify_user_info_entry_set_type(GaimNotifyUserInfoEntry *user_info_entry, + GaimNotifyUserInfoEntryType type); + +/** * Opens a URI or somehow presents it to the user. * * @param handle The plugin or connection handle. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-26 02:01:19
|
Revision: 18052 http://svn.sourceforge.net/gaim/?rev=18052&view=rev Author: evands Date: 2006-12-25 18:01:15 -0800 (Mon, 25 Dec 2006) Log Message: ----------- Things are wrong if we get presence for a Jabber buddy not on our list... I've added a debug warning to point out when that happens. Modified Paths: -------------- trunk/libgaim/protocols/jabber/presence.c Modified: trunk/libgaim/protocols/jabber/presence.c =================================================================== --- trunk/libgaim/protocols/jabber/presence.c 2006-12-25 06:01:33 UTC (rev 18051) +++ trunk/libgaim/protocols/jabber/presence.c 2006-12-26 02:01:15 UTC (rev 18052) @@ -507,6 +507,8 @@ buddy_name = g_strdup_printf("%s%s%s", jid->node ? jid->node : "", jid->node ? "@" : "", jid->domain); if((b = gaim_find_buddy(js->gc->account, buddy_name)) == NULL) { + gaim_debug_warning("jabber", "Got presence for unknown buddy %s on account %s (%x)", + buddy_name, gaim_account_get_username(js->gc->account), js->gc->account); jabber_id_free(jid); if(avatar_hash) g_free(avatar_hash); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-25 06:01:34
|
Revision: 18051 http://svn.sourceforge.net/gaim/?rev=18051&view=rev Author: evands Date: 2006-12-24 22:01:33 -0800 (Sun, 24 Dec 2006) Log Message: ----------- Fixed retrieval of the roster for non-Google Talk Jabber accounts, which was broken in [17993]. This does not entirely fix the problem for such accounts, however; the roster is retrieved *after* we're told of presence for most/all of the roster. If GaimBuddy objects are not already created -- the blist.xml file was deleted, to pick a completely random example -- then such presence information is simply dropped, because jabber_presence_parse() uses gaim_find_buddy() and returns immediately if the buddy can't be found. Modified Paths: -------------- trunk/libgaim/protocols/jabber/disco.c Modified: trunk/libgaim/protocols/jabber/disco.c =================================================================== --- trunk/libgaim/protocols/jabber/disco.c 2006-12-23 19:32:10 UTC (rev 18050) +++ trunk/libgaim/protocols/jabber/disco.c 2006-12-25 06:01:33 UTC (rev 18051) @@ -268,7 +268,7 @@ } } - if (!js->server_caps & JABBER_CAP_GOOGLE_ROSTER) + if (!(js->server_caps & JABBER_CAP_GOOGLE_ROSTER)) jabber_roster_request(js); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-12-23 19:32:11
|
Revision: 18050 http://svn.sourceforge.net/gaim/?rev=18050&view=rev Author: thekingant Date: 2006-12-23 11:32:10 -0800 (Sat, 23 Dec 2006) Log Message: ----------- AIM/ICQ file transfer pausing an resuming. This should work, but could use a little more testing. It's a patch from Graham Booker with modifcations by me. Blame me if I broke file transfer for anything. Modified Paths: -------------- trunk/ChangeLog trunk/ChangeLog.API trunk/libgaim/ft.c trunk/libgaim/ft.h trunk/libgaim/protocols/oscar/oft.c trunk/libgaim/protocols/oscar/peer.c trunk/libgaim/protocols/oscar/peer.h Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-12-23 05:42:41 UTC (rev 18049) +++ trunk/ChangeLog 2006-12-23 19:32:10 UTC (rev 18050) @@ -145,8 +145,10 @@ AIM/ICQ Features: * ICQ file transfer support with newer ICQ clients (Jonathan Clark, Google Summer of Code) - * Many overall improvements to OSCAR file transfers (Jonathan Clark, - Google Summer of Code) + * Many overall improvements to AIM and ICQ file transfers (Jonathan + Clark, Google Summer of Code) + * Support for pausing and resuming AIM and ICQ file transfers + (Graham Booker) * Ability to set ICQ "require authorization" and "web aware" setting (Ettore Simone) * ICQ encoding fix for offline buddies (Ilya Konstantinov) Modified: trunk/ChangeLog.API =================================================================== --- trunk/ChangeLog.API 2006-12-23 05:42:41 UTC (rev 18049) +++ trunk/ChangeLog.API 2006-12-23 19:32:10 UTC (rev 18050) @@ -353,6 +353,8 @@ * gaim_gtk_roomlist_dialog_show_with_account * gaim_gtk_tree_view_search_equal_func to be used with gtk_tree_view_set_search_equal_func + * gaim_xfer_set_bytes_sent(). Sets the offset in the file to + read from or write to. Signals - Changed: (See the Doxygen docs for details on all signals.) * Signal propagation now stops after a handler returns a non-NULL value. Modified: trunk/libgaim/ft.c =================================================================== --- trunk/libgaim/ft.c 2006-12-23 05:42:41 UTC (rev 18049) +++ trunk/libgaim/ft.c 2006-12-23 19:32:10 UTC (rev 18050) @@ -698,12 +698,19 @@ { g_return_if_fail(xfer != NULL); - if (xfer->size == 0) - xfer->bytes_remaining = size - xfer->bytes_sent; - xfer->size = size; + xfer->bytes_remaining = xfer->size - gaim_xfer_get_bytes_sent(xfer); } +void +gaim_xfer_set_bytes_sent(GaimXfer *xfer, size_t bytes_sent) +{ + g_return_if_fail(xfer != NULL); + + xfer->bytes_sent = bytes_sent; + xfer->bytes_remaining = gaim_xfer_get_size(xfer) - bytes_sent; +} + GaimXferUiOps * gaim_xfer_get_ui_ops(const GaimXfer *xfer) { @@ -948,6 +955,8 @@ return; } + fseek(xfer->dest_fp, xfer->bytes_sent, SEEK_SET); + xfer->watcher = gaim_input_add(xfer->fd, cond, transfer_cb, xfer); xfer->start_time = time(NULL); @@ -978,9 +987,6 @@ type = gaim_xfer_get_type(xfer); - xfer->bytes_remaining = gaim_xfer_get_size(xfer); - xfer->bytes_sent = 0; - gaim_xfer_set_status(xfer, GAIM_XFER_STATUS_STARTED); if (type == GAIM_XFER_RECEIVE) { Modified: trunk/libgaim/ft.h =================================================================== --- trunk/libgaim/ft.h 2006-12-23 05:42:41 UTC (rev 18049) +++ trunk/libgaim/ft.h 2006-12-23 19:32:10 UTC (rev 18050) @@ -376,6 +376,21 @@ void gaim_xfer_set_size(GaimXfer *xfer, size_t size); /** + * Sets the current working position in the active file transfer. This + * can be used to jump backward in the file if the protocol detects + * that some bit of data needs to be resent or has been sent twice. + * + * It's used for pausing and resuming an oscar file transfer. + * + * @param xfer The file transfer. + * @param bytes_sent The new current position in the file. If we're + * sending a file then this is the byte that we will + * send. If we're receiving a file, this is the + * next byte that we expect to receive. + */ +void gaim_xfer_set_bytes_sent(GaimXfer *xfer, size_t bytes_sent); + +/** * Returns the UI operations structure for a file transfer. * * @param xfer The file transfer. Modified: trunk/libgaim/protocols/oscar/oft.c =================================================================== --- trunk/libgaim/protocols/oscar/oft.c 2006-12-23 05:42:41 UTC (rev 18049) +++ trunk/libgaim/protocols/oscar/oft.c 2006-12-23 19:32:10 UTC (rev 18050) @@ -116,16 +116,26 @@ if ((fd = fopen(filename, "rb"))) { int bytes; - guint8 buffer[1024]; + guint8 *buffer = g_malloc(65536); - while ((bytes = fread(buffer, 1, 1024, fd)) != 0) + while ((bytes = fread(buffer, 1, 65536, fd)) != 0) checksum = peer_oft_checksum_chunk(buffer, bytes, checksum); + g_free(buffer); fclose(fd); } return checksum; } +static void +peer_oft_copy_xfer_data(PeerConnection *conn, OftFrame *frame) +{ + g_free(conn->xferdata.name); + + memcpy(&(conn->xferdata), frame, sizeof(OftFrame)); + conn->xferdata.name = g_memdup(frame->name, frame->name_length); +} + /** * Free any OFT related data. */ @@ -219,6 +229,17 @@ } static void +peer_oft_send_resume_accept(PeerConnection *conn) +{ + conn->xferdata.type = PEER_TYPE_RESUMEACCEPT; + + /* Fill in the cookie */ + memcpy(conn->xferdata.cookie, conn->cookie, 8); + + peer_oft_send(conn, &conn->xferdata); +} + +static void peer_oft_send_done(PeerConnection *conn) { conn->xferdata.type = PEER_TYPE_DONE; @@ -288,7 +309,7 @@ peer_oft_recv_frame_prompt(PeerConnection *conn, OftFrame *frame) { /* Record the file information and send an ack */ - memcpy(&conn->xferdata, frame, sizeof(OftFrame)); + peer_oft_copy_xfer_data(conn, frame); peer_oft_send_ack(conn); /* Remove our watchers and use the file transfer watchers in the core */ @@ -305,7 +326,7 @@ static void peer_oft_recv_frame_ack(PeerConnection *conn, OftFrame *frame) { - if (memcmp(conn->cookie, frame->cookie, 8)) + if (memcmp(conn->cookie, frame->cookie, 8) != 0) { gaim_debug_info("oscar", "Received an incorrect cookie. " "Closing connection.\n"); @@ -320,6 +341,36 @@ start_transfer_when_done_sending_data, conn); } +/** + * We are sending a file to someone else. They have just acknowledged our + * prompt and are asking to resume, so we accept their resume and await + * a resume ack. + */ +static void +peer_oft_recv_frame_resume(PeerConnection *conn, OftFrame *frame) +{ + if (memcmp(conn->cookie, frame->cookie, 8) != 0) + { + gaim_debug_info("oscar", "Received an incorrect cookie. " + "Closing connection.\n"); + peer_connection_destroy(conn, OSCAR_DISCONNECT_INVALID_DATA, NULL); + return; + } + + /* + * TODO: Check the checksums here. If they don't match then don't + * copy the data like below. + */ + + /* Copy resume data into internal structure */ + conn->xferdata.recvcsum = frame->recvcsum; + conn->xferdata.rfrcsum = frame->rfrcsum; + conn->xferdata.nrecvd = frame->nrecvd; + + gaim_xfer_set_bytes_sent(conn->xfer, frame->nrecvd); + peer_oft_send_resume_accept(conn); +} + /* * We just sent a file to someone. They said they got it and everything, * so we can close our direct connection and what not. @@ -378,12 +429,24 @@ /* TODOFT: peer_oft_dirconvert_fromstupid(frame->name); */ - if (frame.type == PEER_TYPE_PROMPT) - peer_oft_recv_frame_prompt(conn, &frame); - else if (frame.type == PEER_TYPE_ACK) - peer_oft_recv_frame_ack(conn, &frame); - else if (frame.type == PEER_TYPE_DONE) - peer_oft_recv_frame_done(conn, &frame); + switch(frame.type) + { + case PEER_TYPE_PROMPT: + peer_oft_recv_frame_prompt(conn, &frame); + break; + case PEER_TYPE_ACK: + case PEER_TYPE_RESUMEACK: + peer_oft_recv_frame_ack(conn, &frame); + break; + case PEER_TYPE_RESUME: + peer_oft_recv_frame_resume(conn, &frame); + break; + case PEER_TYPE_DONE: + peer_oft_recv_frame_done(conn, &frame); + break; + default: + break; + } free(frame.name); } Modified: trunk/libgaim/protocols/oscar/peer.c =================================================================== --- trunk/libgaim/protocols/oscar/peer.c 2006-12-23 05:42:41 UTC (rev 18049) +++ trunk/libgaim/protocols/oscar/peer.c 2006-12-23 19:32:10 UTC (rev 18050) @@ -230,6 +230,7 @@ g_free(conn->proxyip); g_free(conn->clientip); g_free(conn->verifiedip); + g_free(conn->xferdata.name); gaim_circ_buffer_destroy(conn->buffer_outgoing); conn->od->peer_connections = g_slist_remove(conn->od->peer_connections, conn); Modified: trunk/libgaim/protocols/oscar/peer.h =================================================================== --- trunk/libgaim/protocols/oscar/peer.h 2006-12-23 05:42:41 UTC (rev 18049) +++ trunk/libgaim/protocols/oscar/peer.h 2006-12-23 19:32:10 UTC (rev 18050) @@ -42,11 +42,11 @@ #define PEER_CONNECTION_FLAG_IS_INCOMING 0x0020 #define PEER_TYPE_PROMPT 0x0101 /* "I am going to send you this file, is that ok?" */ -#define PEER_TYPE_RESUMESOMETHING 0x0106 /* I really don't know */ +#define PEER_TYPE_RESUMEACCEPT 0x0106 /* We are accepting the resume */ #define PEER_TYPE_ACK 0x0202 /* "Yes, it is ok for you to send me that file" */ #define PEER_TYPE_DONE 0x0204 /* "I received that file with no problems, thanks a bunch" */ -#define PEER_TYPE_RESUME 0x0205 /* Resume transferring, sent by whoever paused? */ -#define PEER_TYPE_RESUMEACK 0x0207 /* Not really sure */ +#define PEER_TYPE_RESUME 0x0205 /* Resume transferring, sent by whoever receives */ +#define PEER_TYPE_RESUMEACK 0x0207 /* Our resume accept was ACKed */ #define PEER_TYPE_GETFILE_REQUESTLISTING 0x1108 /* "I have a listing.txt file, do you want it?" */ #define PEER_TYPE_GETFILE_RECEIVELISTING 0x1209 /* "Yes, please send me your listing.txt file" */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fac...@us...> - 2006-12-23 05:42:42
|
Revision: 18049 http://svn.sourceforge.net/gaim/?rev=18049&view=rev Author: faceprint Date: 2006-12-22 21:42:41 -0800 (Fri, 22 Dec 2006) Log Message: ----------- fix an odd crash Modified Paths: -------------- trunk/libgaim/protocols/jabber/roster.c Modified: trunk/libgaim/protocols/jabber/roster.c =================================================================== --- trunk/libgaim/protocols/jabber/roster.c 2006-12-22 19:15:38 UTC (rev 18048) +++ trunk/libgaim/protocols/jabber/roster.c 2006-12-23 05:42:41 UTC (rev 18049) @@ -331,9 +331,11 @@ { GaimBuddy *b = gaim_find_buddy(gc->account, name); - gaim_blist_alias_buddy(b, alias); + if(b != NULL) { + gaim_blist_alias_buddy(b, alias); - jabber_roster_update(gc->proto_data, name, NULL); + jabber_roster_update(gc->proto_data, name, NULL); + } } void jabber_roster_group_change(GaimConnection *gc, const char *name, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nos...@us...> - 2006-12-22 19:15:53
|
Revision: 18048 http://svn.sourceforge.net/gaim/?rev=18048&view=rev Author: nosnilmot Date: 2006-12-22 11:15:38 -0800 (Fri, 22 Dec 2006) Log Message: ----------- Fixes for compiling and running with Gtk 2.0 ! Modified Paths: -------------- trunk/gtk/gtkscrollbook.c trunk/gtk/gtkscrollbook.h trunk/gtk/gtkstatusbox.c trunk/gtk/gtkutils.c trunk/gtk/gtkutils.h Modified: trunk/gtk/gtkscrollbook.c =================================================================== --- trunk/gtk/gtkscrollbook.c 2006-12-22 08:41:29 UTC (rev 18047) +++ trunk/gtk/gtkscrollbook.c 2006-12-22 19:15:38 UTC (rev 18048) @@ -133,8 +133,9 @@ static void switch_page_cb(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, GtkGaimScrollBook *scroll_book) { + int count; #if GTK_CHECK_VERSION(2,2,0) - int count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); + count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); #else count = g_list_length(GTK_NOTEBOOK(scroll_book->notebook)->children); #endif Modified: trunk/gtk/gtkscrollbook.h =================================================================== --- trunk/gtk/gtkscrollbook.h 2006-12-22 08:41:29 UTC (rev 18047) +++ trunk/gtk/gtkscrollbook.h 2006-12-22 19:15:38 UTC (rev 18048) @@ -28,6 +28,9 @@ #include <gtk/gtk.h> +#if !GTK_CHECK_VERSION(2,4,0) +#include "gaimcombobox.h" +#endif G_BEGIN_DECLS Modified: trunk/gtk/gtkstatusbox.c =================================================================== --- trunk/gtk/gtkstatusbox.c 2006-12-22 08:41:29 UTC (rev 18047) +++ trunk/gtk/gtkstatusbox.c 2006-12-22 19:15:38 UTC (rev 18048) @@ -1190,9 +1190,11 @@ static void gtk_gaim_status_box_list_position (GtkGaimStatusBox *status_box, int *x, int *y, int *width, int *height) { +#if GTK_CHECK_VERSION(2,2,0) GdkScreen *screen; gint monitor_num; GdkRectangle monitor; +#endif GtkRequisition popup_req; GtkPolicyType hpolicy, vpolicy; @@ -1218,6 +1220,7 @@ *height = popup_req.height; +#if GTK_CHECK_VERSION(2,2,0) screen = gtk_widget_get_screen (GTK_WIDGET (status_box)); monitor_num = gdk_screen_get_monitor_at_window (screen, GTK_WIDGET (status_box)->window); @@ -1250,6 +1253,7 @@ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (status_box->scrolled_window), hpolicy, vpolicy); } +#endif } static gboolean @@ -1268,8 +1272,13 @@ return TRUE; else { +#if GTK_CHECK_VERSION(2,2,0) gdk_display_pointer_ungrab (gdk_drawable_get_display (window), activate_time); +#else + gdk_pointer_ungrab(activate_time); + gdk_keyboard_ungrab(activate_time); +#endif return FALSE; } } @@ -1526,8 +1535,10 @@ } gtk_window_set_resizable (GTK_WINDOW (status_box->popup_window), FALSE); +#if GTK_CHECK_VERSION(2,2,0) gtk_window_set_screen (GTK_WINDOW (status_box->popup_window), gtk_widget_get_screen (GTK_WIDGET (status_box))); +#endif status_box->popup_frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (status_box->popup_frame), GTK_SHADOW_ETCHED_IN); @@ -1554,8 +1565,10 @@ gtk_tree_selection_set_mode (sel, GTK_SELECTION_BROWSE); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (status_box->tree_view), FALSE); +#if GTK_CHECK_VERSION(2,6,0) gtk_tree_view_set_hover_selection (GTK_TREE_VIEW (status_box->tree_view), TRUE); +#endif gtk_tree_view_set_model (GTK_TREE_VIEW (status_box->tree_view), GTK_TREE_MODEL(status_box->dropdown_store)); status_box->column = gtk_tree_view_column_new (); Modified: trunk/gtk/gtkutils.c =================================================================== --- trunk/gtk/gtkutils.c 2006-12-22 08:41:29 UTC (rev 18047) +++ trunk/gtk/gtkutils.c 2006-12-22 19:15:38 UTC (rev 18048) @@ -2466,6 +2466,7 @@ char **prpl_formats; int width, height; char **pixbuf_formats = NULL; + struct stat st; GdkPixbufFormat *format; GdkPixbuf *pixbuf; #if !GTK_CHECK_VERSION(2,4,0) @@ -2477,7 +2478,6 @@ const char *dirname; char *random; char *filename; - struct stat st; prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(plugin); @@ -2815,7 +2815,7 @@ return pixbuf; } -#endif +#endif /* ! Gtk 2.6.0 */ void gaim_gtk_set_custom_buddy_icon(GaimAccount *account, const char *who, const char *filename) { @@ -3092,3 +3092,28 @@ return result; } + +#if !GTK_CHECK_VERSION(2,2,0) +GtkTreePath * +gtk_tree_path_new_from_indices (gint first_index, ...) +{ + int arg; + va_list args; + GtkTreePath *path; + + path = gtk_tree_path_new (); + + va_start (args, first_index); + arg = first_index; + + while (arg != -1) + { + gtk_tree_path_append_index (path, arg); + arg = va_arg (args, gint); + } + + va_end (args); + + return path; +} +#endif Modified: trunk/gtk/gtkutils.h =================================================================== --- trunk/gtk/gtkutils.h 2006-12-22 08:41:29 UTC (rev 18047) +++ trunk/gtk/gtkutils.h 2006-12-22 19:15:38 UTC (rev 18048) @@ -533,5 +533,20 @@ gboolean gaim_gtk_tree_view_search_equal_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer data); +#if !GTK_CHECK_VERSION(2,2,0) +/** + * This is copied from Gtk to support Gtk 2.0 + * + * Creates a new path with @first_index and @varargs as indices. + * + * @param first_index first integer + * @param varargs list of integers terminated by -1 + * + * @return A newly created GtkTreePath. + * + */ +GtkTreePath *gtk_tree_path_new_from_indices (gint first_index, ...); +#endif + #endif /* _GAIM_GTKUTILS_H_ */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-12-22 08:41:30
|
Revision: 18047 http://svn.sourceforge.net/gaim/?rev=18047&view=rev Author: sadrul Date: 2006-12-22 00:41:29 -0800 (Fri, 22 Dec 2006) Log Message: ----------- Make sure the file-select dialogs (for execute-a-command or play-a-sound) are closed when the pounce-dialog is closed. Modified Paths: -------------- trunk/gtk/gtkpounce.c Modified: trunk/gtk/gtkpounce.c =================================================================== --- trunk/gtk/gtkpounce.c 2006-12-22 08:33:12 UTC (rev 18046) +++ trunk/gtk/gtkpounce.c 2006-12-22 08:41:29 UTC (rev 18047) @@ -154,6 +154,8 @@ gaim_request_file(entry, _("Select a file"), name, FALSE, G_CALLBACK(pounce_update_entry_fields), NULL, entry); + g_signal_connect_swapped(G_OBJECT(entry), "destroy", + G_CALLBACK(gaim_request_close_with_handle), entry); } static void This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-22 08:33:17
|
Revision: 18046 http://svn.sourceforge.net/gaim/?rev=18046&view=rev Author: evands Date: 2006-12-22 00:33:12 -0800 (Fri, 22 Dec 2006) Log Message: ----------- When there is no away message specified in the info block and the contact is no longer away, clear the cached away message if there is one. Previously, when a contact did the following: 1. Away with Message 1 2. Available 3. Away with Message 2 the 3rd event would lead to setting away first with Message 1 (cached in the old user_info object) and then with Message 2 (using a newly created user_info object). I also changed 2 "#if 0" directives which together controlled logging unknown TLVs into "#ifdef LOG_UNKNOWN_TLV" and added a commented-out #define at the top of the file. Modified Paths: -------------- trunk/libgaim/protocols/oscar/family_locate.c Modified: trunk/libgaim/protocols/oscar/family_locate.c =================================================================== --- trunk/libgaim/protocols/oscar/family_locate.c 2006-12-22 08:29:28 UTC (rev 18045) +++ trunk/libgaim/protocols/oscar/family_locate.c 2006-12-22 08:33:12 UTC (rev 18046) @@ -31,6 +31,9 @@ #include "win32dep.h" #endif +/* Define to log unknown TLVs */ +/* #define LOG_UNKNOWN_TLV */ + /* * Capability blocks. * @@ -301,6 +304,21 @@ cur->away = NULL; cur->away_encoding = strdup(userinfo->away_encoding); cur->away_len = userinfo->away_len; + + } else if (!(userinfo->flags & AIM_FLAG_AWAY)) { + /* + * We don't have an away message specified in this user_info block. + * If the user is not away, clear any cached away message now. + */ + if (cur->away) { + free(cur->away); + cur->away = NULL; + } + if (cur->away_encoding) { + free(cur->away_encoding); + cur->away_encoding = NULL; + } + cur->away_len = 0; } /* @@ -525,7 +543,7 @@ return 0; } -#if 0 +#ifdef LOG_UNKNOWN_TLV static void dumptlv(OscarData *od, guint16 type, ByteStream *bs, guint8 len) { @@ -851,7 +869,7 @@ * recovery. * */ -#if 0 +#ifdef LOG_UNKNOWN_TLV gaim_debug_misc("oscar", "userinfo: **warning: unexpected TLV:\n"); gaim_debug_misc("oscar", "userinfo: sn =%s\n", outinfo->sn); dumptlv(od, type, bs, length); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-22 08:29:32
|
Revision: 18045 http://svn.sourceforge.net/gaim/?rev=18045&view=rev Author: evands Date: 2006-12-22 00:29:28 -0800 (Fri, 22 Dec 2006) Log Message: ----------- We occasionally get to gaim_parse_oncoming() with a user_info indicating a NULL away message for a contact who (1) is away and is still away and (2) does actually have a message. gaim_got_infoblock() will then be called shortly thereafter. Check to ensure that the call to gaim_prpl_got_user_status() has some benefit other than potentially removing an appropriate away message; do the call if the status actually changes as a result. This fixes an issue in which away messages would periodically flicker invisible and then visible again in the contact list for certain contacts. Modified Paths: -------------- trunk/libgaim/protocols/oscar/oscar.c Modified: trunk/libgaim/protocols/oscar/oscar.c =================================================================== --- trunk/libgaim/protocols/oscar/oscar.c 2006-12-22 06:59:05 UTC (rev 18044) +++ trunk/libgaim/protocols/oscar/oscar.c 2006-12-22 08:29:28 UTC (rev 18045) @@ -1774,8 +1774,18 @@ g_free(message); } else - gaim_prpl_got_user_status(account, info->sn, status_id, NULL); - + { + GaimBuddy *b = gaim_find_buddy(account, info->sn); + GaimStatus *status; + const char *active_status_id; + + status = gaim_presence_get_active_status(gaim_buddy_get_presence(b)); + active_status_id = gaim_status_get_id(status); + + if (!active_status_id || strcmp(active_status_id, status_id)) + gaim_prpl_got_user_status(account, info->sn, status_id, NULL); + } + /* Login time stuff */ if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) signon = info->onlinesince; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-12-22 06:59:05
|
Revision: 18044 http://svn.sourceforge.net/gaim/?rev=18044&view=rev Author: thekingant Date: 2006-12-21 22:59:05 -0800 (Thu, 21 Dec 2006) Log Message: ----------- Get rid of a compile warning Modified Paths: -------------- trunk/libgaim/protocols/oscar/family_chat.c Modified: trunk/libgaim/protocols/oscar/family_chat.c =================================================================== --- trunk/libgaim/protocols/oscar/family_chat.c 2006-12-22 06:39:55 UTC (rev 18043) +++ trunk/libgaim/protocols/oscar/family_chat.c 2006-12-22 06:59:05 UTC (rev 18044) @@ -121,7 +121,7 @@ outinfo->exchange = byte_stream_get16(bs); outinfo->namelen = byte_stream_get8(bs); - outinfo->name = byte_stream_getraw(bs, outinfo->namelen); + outinfo->name = (char *)byte_stream_getraw(bs, outinfo->namelen); outinfo->instance = byte_stream_get16(bs); return 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-12-22 06:39:57
|
Revision: 18043 http://svn.sourceforge.net/gaim/?rev=18043&view=rev Author: sadrul Date: 2006-12-21 22:39:55 -0800 (Thu, 21 Dec 2006) Log Message: ----------- Plug a small leak in the pounce dialog. Modified Paths: -------------- trunk/gtk/gtkpounce.c Modified: trunk/gtk/gtkpounce.c =================================================================== --- trunk/gtk/gtkpounce.c 2006-12-22 05:31:54 UTC (rev 18042) +++ trunk/gtk/gtkpounce.c 2006-12-22 06:39:55 UTC (rev 18043) @@ -741,6 +741,8 @@ g_signal_connect(G_OBJECT(dialog->exec_cmd_browse), "clicked", G_CALLBACK(filesel), dialog->exec_cmd_entry); + g_object_set_data_full(G_OBJECT(dialog->window), "exec-widgets", + exec_widgets, (GDestroyNotify)g_ptr_array_free); sound_widgets = g_ptr_array_new(); g_ptr_array_add(sound_widgets,dialog->play_sound_entry); @@ -756,6 +758,8 @@ g_signal_connect(G_OBJECT(dialog->play_sound_test), "clicked", G_CALLBACK(pounce_test_sound), dialog->play_sound_entry); + g_object_set_data_full(G_OBJECT(dialog->window), "sound-widgets", + sound_widgets, (GDestroyNotify)g_ptr_array_free); g_signal_connect(G_OBJECT(dialog->send_msg_entry), "activate", G_CALLBACK(save_pounce_cb), dialog); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-12-22 05:32:01
|
Revision: 18042 http://svn.sourceforge.net/gaim/?rev=18042&view=rev Author: markhuetsch Date: 2006-12-21 21:31:54 -0800 (Thu, 21 Dec 2006) Log Message: ----------- Only prompt to resend a non-acked packet when the result of that packet being dropped would probably be significant. In that case, give a user-friendly notification. Modified Paths: -------------- trunk/libgaim/protocols/qq/header_info.h trunk/libgaim/protocols/qq/qq.c trunk/libgaim/protocols/qq/sendqueue.c Modified: trunk/libgaim/protocols/qq/header_info.h =================================================================== --- trunk/libgaim/protocols/qq/header_info.h 2006-12-22 00:47:43 UTC (rev 18041) +++ trunk/libgaim/protocols/qq/header_info.h 2006-12-22 05:31:54 UTC (rev 18042) @@ -40,7 +40,7 @@ QQ_CMD_LOGOUT = 0x0001, /* log out */ QQ_CMD_KEEP_ALIVE = 0x0002, /* get onlines from tencent */ QQ_CMD_UPDATE_INFO = 0x0004, /* update information */ - QQ_CMD_SEARCH_USER = 0x0005, /* serach for user */ + QQ_CMD_SEARCH_USER = 0x0005, /* search for user */ QQ_CMD_GET_USER_INFO = 0x0006, /* get user information */ QQ_CMD_ADD_FRIEND_WO_AUTH = 0x0009, /* add friend without auth */ QQ_CMD_DEL_FRIEND = 0x000a, /* delete a friend */ Modified: trunk/libgaim/protocols/qq/qq.c =================================================================== --- trunk/libgaim/protocols/qq/qq.c 2006-12-22 00:47:43 UTC (rev 18041) +++ trunk/libgaim/protocols/qq/qq.c 2006-12-22 05:31:54 UTC (rev 18042) @@ -766,7 +766,6 @@ gaim_prefs_add_none("/plugins/prpl/qq"); gaim_prefs_add_bool("/plugins/prpl/qq/show_status_by_icon", TRUE); gaim_prefs_add_bool("/plugins/prpl/qq/show_fake_video", FALSE); - gaim_prefs_add_bool("/plugins/prpl/qq/prompt_for_missing_packet", TRUE); gaim_prefs_add_bool("/plugins/prpl/qq/prompt_group_msg_on_recv", TRUE); } Modified: trunk/libgaim/protocols/qq/sendqueue.c =================================================================== --- trunk/libgaim/protocols/qq/sendqueue.c 2006-12-22 00:47:43 UTC (rev 18041) +++ trunk/libgaim/protocols/qq/sendqueue.c 2006-12-22 05:31:54 UTC (rev 18042) @@ -78,7 +78,7 @@ gaim_debug(GAIM_DEBUG_INFO, "QQ", "%d packets in sendqueue are freed!\n", i); } -/* packet lost, agree to send again, (and will NOT prompt again) +/* packet lost, agree to send again. * it is removed only when ack-ed by server */ static void _qq_send_again(gc_and_packet *gp) { @@ -125,16 +125,29 @@ g_free(gp); } +static void _notify_packets_lost(GaimConnection *gc, const gchar *msg, qq_sendpacket *p) +{ + gc_and_packet *gp; + + gp = g_new0(gc_and_packet, 1); + gp->gc = gc; + gp->packet = p; + gaim_request_action + (gc, NULL, _("Communication timed out"), msg, + 0, gp, 2, _("Try again"), G_CALLBACK(_qq_send_again), + _("Cancel"), G_CALLBACK(_qq_send_cancel)); + /* keep in sendqueue doing nothing until we hear back from the user */ + p->resend_times++; +} + gboolean qq_sendqueue_timeout_callback(gpointer data) { GaimConnection *gc; qq_data *qd; GList *list; qq_sendpacket *p; - gc_and_packet *gp; time_t now; gint wait_time; - gboolean need_action; gc = (GaimConnection *) data; qd = (qq_data *) gc->proto_data; @@ -166,44 +179,52 @@ case QQ_CMD_KEEP_ALIVE: if (qd->logged_in) { gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Connection lost!\n"); - gaim_connection_error(gc, _("Connection lost!")); + gaim_connection_error(gc, _("Connection lost")); qd->logged_in = FALSE; } p->resend_times = -1; break; case QQ_CMD_LOGIN: + case QQ_CMD_REQUEST_LOGIN_TOKEN: if (!qd->logged_in) /* cancel logging progress */ - gaim_connection_error(gc, _("Login failed, no reply!")); + gaim_connection_error(gc, _("Login failed, no reply")); p->resend_times = -1; break; case QQ_CMD_UPDATE_INFO: - gaim_notify_error(gc, NULL, - _("Connection timeout!"), _("User info is not updated")); - p->resend_times = -1; + _notify_packets_lost(gc, + _("Your attempt to update your info has timed out. Send the information again?"), p); break; + case QQ_CMD_GET_USER_INFO: + _notify_packets_lost(gc, + _("Your attempt to view a user's info has timed out. Try again?"), p); + break; + case QQ_CMD_ADD_FRIEND_WO_AUTH: + _notify_packets_lost(gc, + _("Your attempt to add a buddy has timed out. Try again?"), p); + break; + case QQ_CMD_DEL_FRIEND: + _notify_packets_lost(gc, + _("Your attempt to remove a buddy has timed out. Try again?"), p); + break; + case QQ_CMD_BUDDY_AUTH: + _notify_packets_lost(gc, + _("Your attempt to add a buddy has timed out. Try again?"), p); + break; + case QQ_CMD_CHANGE_ONLINE_STATUS: + _notify_packets_lost(gc, + _("Your attempt to change your online status has timed out. Send the information again?"), p); + break; + case QQ_CMD_SEND_IM: + _notify_packets_lost(gc, + _("Your attempt to send an IM has timed out. Send it again?"), p); + break; + case QQ_CMD_REQUEST_KEY: + _notify_packets_lost(gc, + _("Your request for a file transfer key has timed out. Request it again?"), p); + break; default:{ - need_action = - gaim_prefs_get_bool("/plugins/prpl/qq/prompt_for_missing_packet"); - if (!need_action) - p->resend_times = -1; /* it will be removed next time */ - else { /* prompt for action */ - gp = g_new0(gc_and_packet, 1); - gp->gc = gc; - gp->packet = p; - gaim_request_action - (gc, NULL, - _ - ("Send packet"), - _ - ("Packets lost, send again?"), - 0, gp, 2, - _("Send"), - G_CALLBACK - (_qq_send_again), - _("Cancel"), G_CALLBACK(_qq_send_cancel)); - /* will send once more, but only once */ - p->resend_times++; - } + p->resend_times = -1; /* it will be removed next time */ + gaim_debug(GAIM_DEBUG_ERROR, "QQ", "%s packet lost!\n", qq_get_cmd_desc(p->cmd)); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ebl...@us...> - 2006-12-22 00:47:44
|
Revision: 18041 http://svn.sourceforge.net/gaim/?rev=18041&view=rev Author: eblanton Date: 2006-12-21 16:47:43 -0800 (Thu, 21 Dec 2006) Log Message: ----------- The IRC room namelist was not being parsed properly on ircds which do not append a space following the last nick on a 353 line which is not final. The RFC does not seem to require such a space, and apparently some servers do not send it. Thanks to jphendrix for pointing this out. Modified Paths: -------------- trunk/libgaim/protocols/irc/msgs.c Modified: trunk/libgaim/protocols/irc/msgs.c =================================================================== --- trunk/libgaim/protocols/irc/msgs.c 2006-12-21 23:57:27 UTC (rev 18040) +++ trunk/libgaim/protocols/irc/msgs.c 2006-12-22 00:47:43 UTC (rev 18041) @@ -434,6 +434,8 @@ if (!irc->names) irc->names = g_string_new(""); + if (irc->names->len && irc->names->str[irc->names->len - 1] != ' ') + irc->names = g_string_append_c(irc->names, ' '); irc->names = g_string_append(irc->names, args[3]); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-12-21 23:57:29
|
Revision: 18040 http://svn.sourceforge.net/gaim/?rev=18040&view=rev Author: sadrul Date: 2006-12-21 15:57:27 -0800 (Thu, 21 Dec 2006) Log Message: ----------- Fix bug #1618129. Add a --with-ncurses-headers option for configure. The script will also look in NCURSES_HEADERS environment variable. Modified Paths: -------------- trunk/configure.ac Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-12-21 09:32:11 UTC (rev 18039) +++ trunk/configure.ac 2006-12-21 23:57:27 UTC (rev 18040) @@ -370,6 +370,9 @@ dnl ####################################################################### GNT_LIBS="" GNT_CFLAGS="" +AC_ARG_WITH(ncurses-headers, [AC_HELP_STRING([--with-ncurses-headers=DIR], + [compile gaim-text against the ncurses includes in DIR])], + [ac_ncurses_includes="$withval"], [ac_ncurses_includes=""]) if test "x$enable_consoleui" = "xyes"; then AC_CHECK_LIB(ncursesw, initscr, [GNT_LIBS="-lncursesw"], [enable_consoleui=no]) AC_CHECK_LIB(panelw, update_panels, [GNT_LIBS="$GNT_LIBS -lpanelw"], [enable_consoleui=no]) @@ -377,8 +380,9 @@ if test "x$enable_consoleui" = "xyes"; then dnl # Some distros put the headers in ncursesw/, some don't found_ncurses_h=no - for f in /usr/include/ncursesw/ncurses.h /usr/include/ncurses.h + for location in $ac_ncurses_includes $NCURSES_HEADERS /usr/include/ncursesw /usr/include do + f="$location/ncurses.h" AC_CHECK_HEADER($f,[ AC_MSG_CHECKING([if $f supports wide characters]) AC_TRY_COMPILE([ @@ -389,7 +393,7 @@ # error get_wch not found! #endif ], [ - dir=`dirname $f` + dir=location if test x"$dir" != x"." ; then GNT_CFLAGS="-I$dir/" else @@ -419,6 +423,13 @@ AC_CHECK_LIB(ncurses, initscr, [GNT_LIBS="-lncurses"], [enable_consoleui=no]) AC_CHECK_LIB(panel, update_panels, [GNT_LIBS="$GNT_LIBS -lpanel"], [enable_consoleui=no]) AC_DEFINE(NO_WIDECHAR, 1, [Define to 1 if you don't have wide-character support.]) + if test x"$ac_ncurses_includes" != "x"; then + GNT_CFLAGS="-I$ac_ncurses_includes" + else + if test x"$NCURSES_HEADERS" != "x"; then + GNT_CFLAGS="-I$NCURSES_HEADERS" + fi + fi fi PKG_CHECK_MODULES(X11, x11, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-12-21 09:32:12
|
Revision: 18039 http://svn.sourceforge.net/gaim/?rev=18039&view=rev Author: evands Date: 2006-12-21 01:32:11 -0800 (Thu, 21 Dec 2006) Log Message: ----------- Only emit the buddy-got-login-time signal if the login time actually changes in gaim_prpl_got_user_login_time() Modified Paths: -------------- trunk/libgaim/prpl.c Modified: trunk/libgaim/prpl.c =================================================================== --- trunk/libgaim/prpl.c 2006-12-21 09:21:32 UTC (rev 18038) +++ trunk/libgaim/prpl.c 2006-12-21 09:32:11 UTC (rev 18039) @@ -116,9 +116,12 @@ presence = gaim_buddy_get_presence(buddy); - gaim_presence_set_login_time(presence, login_time); + if (gaim_presence_get_login_time(presence) != login_time) + { + gaim_presence_set_login_time(presence, login_time); - gaim_signal_emit(gaim_blist_get_handle(), "buddy-got-login-time", buddy); + gaim_signal_emit(gaim_blist_get_handle(), "buddy-got-login-time", buddy); + } } void This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-12-21 09:21:32
|
Revision: 18038 http://svn.sourceforge.net/gaim/?rev=18038&view=rev Author: thekingant Date: 2006-12-21 01:21:32 -0800 (Thu, 21 Dec 2006) Log Message: ----------- Correct 2 tiny spelling mistakes Modified Paths: -------------- trunk/libgaim/protocols/oscar/family_chatnav.c trunk/libgaim/protocols/oscar/oscar.c Modified: trunk/libgaim/protocols/oscar/family_chatnav.c =================================================================== --- trunk/libgaim/protocols/oscar/family_chatnav.c 2006-12-21 09:14:53 UTC (rev 18037) +++ trunk/libgaim/protocols/oscar/family_chatnav.c 2006-12-21 09:21:32 UTC (rev 18038) @@ -417,7 +417,7 @@ } if (snac2->family != 0x000d) { - gaim_debug_misc("oscar", "faim: chatnav_parse_info: recieved response that maps to corrupt request! (fam=%04x)\n", snac2->family); + gaim_debug_misc("oscar", "faim: chatnav_parse_info: received response that maps to corrupt request! (fam=%04x)\n", snac2->family); return 0; } Modified: trunk/libgaim/protocols/oscar/oscar.c =================================================================== --- trunk/libgaim/protocols/oscar/oscar.c 2006-12-21 09:14:53 UTC (rev 18037) +++ trunk/libgaim/protocols/oscar/oscar.c 2006-12-21 09:21:32 UTC (rev 18038) @@ -3330,7 +3330,7 @@ } /* - * Recieved in response to an IM sent with the AIM_IMFLAGS_ACK option. + * Received in response to an IM sent with the AIM_IMFLAGS_ACK option. */ static int gaim_parse_msgack(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { va_list ap; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-12-21 09:14:56
|
Revision: 18037 http://svn.sourceforge.net/gaim/?rev=18037&view=rev Author: thekingant Date: 2006-12-21 01:14:53 -0800 (Thu, 21 Dec 2006) Log Message: ----------- Don't try to do stuff with an empty username or ICBM cookie Modified Paths: -------------- trunk/libgaim/protocols/oscar/oscar.c Modified: trunk/libgaim/protocols/oscar/oscar.c =================================================================== --- trunk/libgaim/protocols/oscar/oscar.c 2006-12-21 08:58:55 UTC (rev 18036) +++ trunk/libgaim/protocols/oscar/oscar.c 2006-12-21 09:14:53 UTC (rev 18037) @@ -2732,6 +2732,10 @@ "Message error with data %s and reason %hu\n", (data != NULL ? data : ""), reason); + if ((data == NULL) || (*data == '\0')) + /* We can't do anything if data is empty */ + return 1; + #ifdef TODOFT /* If this was a file transfer request, data is a cookie */ if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, data))) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-12-21 08:58:55
|
Revision: 18036 http://svn.sourceforge.net/gaim/?rev=18036&view=rev Author: thekingant Date: 2006-12-21 00:58:55 -0800 (Thu, 21 Dec 2006) Log Message: ----------- * Convert or validate the chat room name in chat room invites as UTF8 * Bail out if the ICBM cookie doesn't match the rendezvous ICBM cookie Modified Paths: -------------- trunk/libgaim/protocols/oscar/family_chat.c trunk/libgaim/protocols/oscar/family_icbm.c trunk/libgaim/protocols/oscar/oscar.c trunk/libgaim/protocols/oscar/oscar.h Modified: trunk/libgaim/protocols/oscar/family_chat.c =================================================================== --- trunk/libgaim/protocols/oscar/family_chat.c 2006-12-21 08:14:05 UTC (rev 18035) +++ trunk/libgaim/protocols/oscar/family_chat.c 2006-12-21 08:58:55 UTC (rev 18036) @@ -116,14 +116,12 @@ int aim_chat_readroominfo(ByteStream *bs, struct aim_chat_roominfo *outinfo) { - int namelen; - if (!bs || !outinfo) return 0; outinfo->exchange = byte_stream_get16(bs); - namelen = byte_stream_get8(bs); - outinfo->name = byte_stream_getstr(bs, namelen); + outinfo->namelen = byte_stream_get8(bs); + outinfo->name = byte_stream_getraw(bs, outinfo->namelen); outinfo->instance = byte_stream_get16(bs); return 0; Modified: trunk/libgaim/protocols/oscar/family_icbm.c =================================================================== --- trunk/libgaim/protocols/oscar/family_icbm.c 2006-12-21 08:14:05 UTC (rev 18035) +++ trunk/libgaim/protocols/oscar/family_icbm.c 2006-12-21 08:58:55 UTC (rev 18036) @@ -1915,7 +1915,12 @@ */ cookie2 = byte_stream_getraw(&bbs, 8); if (memcmp(cookie, cookie2, 8) != 0) - gaim_debug_misc("oscar", "rend: warning cookies don't match!\n"); + { + gaim_debug_warning("oscar", + "Cookies don't match in rendezvous ICBM, bailing out.\n"); + free(cookie2); + return 1; + } memcpy(args.cookie, cookie2, 8); free(cookie2); Modified: trunk/libgaim/protocols/oscar/oscar.c =================================================================== --- trunk/libgaim/protocols/oscar/oscar.c 2006-12-21 08:14:05 UTC (rev 18035) +++ trunk/libgaim/protocols/oscar/oscar.c 2006-12-21 08:58:55 UTC (rev 18036) @@ -845,10 +845,13 @@ return NULL; x = strchr(name, '-'); + if (!x) + return NULL; - if (!x) return NULL; - x = strchr(++x, '-'); - if (!x) return NULL; + x = strchr(x + 1, '-'); + if (!x) + return NULL; + tmp = g_strdup(++x); for (i = 0, j = 0; x[i]; i++) { @@ -857,7 +860,8 @@ tmp[j++] = x[i]; continue; } - strncpy(hex, x + ++i, 2); hex[2] = 0; + strncpy(hex, x + ++i, 2); + hex[2] = 0; i++; tmp[j++] = strtol(hex, NULL, 16); } @@ -2046,27 +2050,36 @@ if (args->type & OSCAR_CAPABILITY_CHAT) { - char *name; + char *encoding, *utf8name, *tmp; GHashTable *components; if (!args->info.chat.roominfo.name || !args->info.chat.roominfo.exchange) { g_free(message); return 1; } + encoding = args->encoding ? oscar_encoding_extract(args->encoding) : NULL; + utf8name = oscar_encoding_to_utf8(encoding, + args->info.chat.roominfo.name, + args->info.chat.roominfo.namelen); + g_free(encoding); + + tmp = extract_name(utf8name); + if (tmp != NULL) + { + g_free(utf8name); + utf8name = tmp; + } + components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); - name = extract_name(args->info.chat.roominfo.name); - g_hash_table_replace(components, g_strdup("room"), - g_strdup(name ? name : args->info.chat.roominfo.name)); + g_hash_table_replace(components, g_strdup("room"), utf8name); g_hash_table_replace(components, g_strdup("exchange"), g_strdup_printf("%d", args->info.chat.roominfo.exchange)); serv_got_chat_invite(gc, - name ? name : args->info.chat.roominfo.name, + utf8name, userinfo->sn, message, components); - if (name) - g_free(name); } else if ((args->type & OSCAR_CAPABILITY_SENDFILE) || Modified: trunk/libgaim/protocols/oscar/oscar.h =================================================================== --- trunk/libgaim/protocols/oscar/oscar.h 2006-12-21 08:14:05 UTC (rev 18035) +++ trunk/libgaim/protocols/oscar/oscar.h 2006-12-21 08:58:55 UTC (rev 18036) @@ -698,6 +698,7 @@ { guint16 exchange; char *name; + guint8 namelen; guint16 instance; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-12-21 08:14:05
|
Revision: 18035 http://svn.sourceforge.net/gaim/?rev=18035&view=rev Author: thekingant Date: 2006-12-21 00:14:05 -0800 (Thu, 21 Dec 2006) Log Message: ----------- Get rid of a compile warning: gtkblist.c: In function ?\226?\128?\152redo_buddy_list?\226?\128?\153: gtkblist.c:4378: warning: ISO C90 forbids mixed declarations and code Modified Paths: -------------- trunk/gtk/gtkblist.c Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-12-21 00:40:21 UTC (rev 18034) +++ trunk/gtk/gtkblist.c 2006-12-21 08:14:05 UTC (rev 18035) @@ -4371,11 +4371,13 @@ static void redo_buddy_list(GaimBuddyList *list, gboolean remove, gboolean rerender) { + GaimBlistNode *node; + gtkblist = GAIM_GTK_BLIST(list); if(!gtkblist || !gtkblist->treeview) return; - GaimBlistNode *node = list->root; + node = list->root; while (node) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ebl...@us...> - 2006-12-21 00:40:29
|
Revision: 18034 http://svn.sourceforge.net/gaim/?rev=18034&view=rev Author: eblanton Date: 2006-12-20 16:40:21 -0800 (Wed, 20 Dec 2006) Log Message: ----------- This patch fixes startup crashes when the blist is manipulated before the Gtk blist is created. Thanks to Geoffrey Antos. Modified Paths: -------------- trunk/COPYRIGHT trunk/gtk/gtkblist.c Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-12-20 20:38:20 UTC (rev 18033) +++ trunk/COPYRIGHT 2006-12-21 00:40:21 UTC (rev 18034) @@ -7,6 +7,7 @@ Dave Ahlswede Manuel Amador Matt Amato +Geoffrey Antos Daniel Atallah Paul Aurich Patrick Aussems Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-12-20 20:38:20 UTC (rev 18033) +++ trunk/gtk/gtkblist.c 2006-12-21 00:40:21 UTC (rev 18034) @@ -4371,6 +4371,10 @@ static void redo_buddy_list(GaimBuddyList *list, gboolean remove, gboolean rerender) { + gtkblist = GAIM_GTK_BLIST(list); + if(!gtkblist || !gtkblist->treeview) + return; + GaimBlistNode *node = list->root; while (node) @@ -4863,7 +4867,7 @@ { if (list) gtkblist = GAIM_GTK_BLIST(list); - if(!gtkblist || !node) + if(!gtkblist || !gtkblist->treeview || !node) return; if (node->ui_data == NULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |