msimprpl status update

Jeff Connelly shellreef at gmail.com
Sun Mar 2 16:36:48 EST 2008


Since the last public status update on 2008-02-11, I filed, fixed, or
verified & applied fixes for 15 bugs.

I fixed http://developer.pidgin.im/ticket/3378 "Group containing
MySpaceIM buddies always goes to the top" by not incorrectly re-adding
buddies every time they are received from the server, if they already
exist on the user's buddy list. A simple fix, but this makes groups
more usable for MySpaceIM buddies. There are still two group-related
bugs open, however:

http://developer.pidgin.im/ticket/3444 buddies do not stay grouped
http://developer.pidgin.im/ticket/4841 Group that buddy is in isn't
changed when rearranging

These are caused by lack of protocol support for rearranging buddies
in msimprpl. The MySpaceIM protocol itself supports it, but it hasn't
yet been fully reverse-engineered, as far as I know (unofficial
documentation on the protocol is available at:
http://imfreedom.org/wiki/index.php/MySpaceIM ). Have not yet looked
into how other unofficial MySpaceIM clients handle this.

hbons created a nice icon for the generic "Send Attention" GUI:
http://developer.pidgin.im/ticket/4809 . The icon is within Monotone,
but not currently distributed since the GUI patch by nok,
http://developer.pidgin.im/ticket/2788 , has not been applied yet
because it necessarily breaks the _PidginWindow.menu ABI. We probably
need to wait until a release where we can break this ABI in order
apply this patch.

Jaywalker has been tackling several bugs within msimprpl. His patch
for http://developer.pidgin.im/ticket/2844 now allows new users to set
their IM username on their first login, if it is not already set.
Users without usernames show up by numeric user ID, and this is not
allowed by the official client. Recall that MySpace in unusual in that
a) users login with their email address, b) are uniquely identified by
their numeric user ID, and c) are located by other users by their
username. I also applied Jaywalker's fix for
http://developer.pidgin.im/ticket/4857 , but there are still possible
memory leaks: http://developer.pidgin.im/ticket/4866 . Nonetheless
username setting functionality is an important feature, because
according to a MySpace employee, username-less users sending instant
messages could be banned as part of their anti-spam measures.

I fixed the last memory leak listed in the bug reported by oliver at
http://developer.pidgin.im/ticket/3281 , a leak in
msim_msg_dictionary_parse(). The problem was that this function
dynamically added message elements, with dynamically-allocated element
names, but element names were always treated as static strings so you
could easily pass literal strings (the most common case), hence they
were never freed. Fixed this by adding a flag to MsimMessageElement,
specifying whether the key name is dynamic. An alternate fix could be
g_strdup()ing all the static key names, making them dynamic
everywhere, but the other solution should work fine without
excessively copying memory.

Jaywalker also sent a patch for
http://developer.pidgin.im/ticket/3143, to allow 2-level nested
bold/italic/underline formatting. MySpaceIM's markup language does not
have distinct <b>, <i>, <u> tags like HTML; instead, it has one <f>
tag with a bit field specifying the bold/italic/underline bits. The
HTML control that Pidgin uses requires HTML to display the formatting,
so msimprpl has to convert back and forth between the bit-field and
nested tags, in order to receive formatted incoming messages and send
formatted outgoing messages. This patch works in the most common
cases, but I filed http://developer.pidgin.im/ticket/5019 to track
situations where the formatting isn't converted as expected, with more
deeply-nested tags.

Starting January, I set out to open or close 20 bugs, and ended up
filing, fixing, or verifying and applying third-party patches for a
total of 37:

+=filed (found & originated bug), -=closed (fixed or verified & applied fix)
37 +#5019 msimprpl nested bold/italic/underline formatting - all levels
36 -#3143 msimprpl 2-level nested bold/italic/underline formatting
35 -#4755 Propagate t:v2.4.0 to im.pidgin.soc.2007.msimprpl
34 -#3281 leak in msim_msg_dictionary_parse()
33 -#3222 Pidgin crashes when connecting to MySpaceIM possibly after
receiving offline messages
32 +#4897 Trac has about 20 tickets with milestone 2.3.2, should be 2.4.0
31 +#4867 Closing tickets by a mtn commit log incorrectly sets
milestone to 2.3.2 (should be 2.4.0)
30 +#4866 username setting memory leaks
29 -#4857 immediately after setting a username, outgoing messages
still appear as from a uid
28 +#4857 immediately after setting a username, outgoing messages
still appear as from a uid
27 -#4856 msimprpl set username commands should use symbolic constants
26 -#2844 msimprpl should allow user to choose IM username if not already set
25 -#4809 "Send Attention" command icon for conversation menu
24 -#3378 Group containing MySpaceIM buddies always goes to the top
23 +#4841 Group that buddy is in isn't changed when rearranging
22 +#4810 Send Attention menu item in conversation menu should expand
if there are multiple attention commands that can be sent
21 +#4809 "Send Attention" command icon for conversation menu
20 +#4808 Opening preferences crashes Pidgin (Monotone) in strlen
19 -#4790 myspace protocol performance improvement: call strlen
outside of loop in msim_unescape
18 -#4779 Move MsimProtocolSpec to IM Freedom wiki
17 +#4779 Move MsimProtocolSpec to IM Freedom wiki
16 -#4369 MyspaceIM error 260 when logging in to an account with an
11-character password, should ask user to change password
15 +#4776 Allow prpls to specify a callback for when the music note
next to a buddy is clicked
14 +#4775 Allow inviting non-IM buddies to MySpaceIM
13 +#4766 Allow clicking music note next to buddy to play their music
12 -#4140 msimprpl should use PURPLE_STATUS_TUNE to show current song playing
11 -#3237 msimprpl allocates 2 GB of memory and crashes (Windows)
10 -#4737 msimprpl memory leak (msim_uid2username_from_blist)
9 +#4735 For msimprpl msim_input_cb, look into using PurpleCircBuffer
8 -#4621 MySpace IM causing program freeze at login attempt
7 +#4691 msimprpl group chats
6 +#4689 msimprpl should handle buddies on buddy list without MySpaceIM
5 -#4687 msimprpl sending a message to a non-existent user should show
error in IM window, not in a popup dialog
4 +#4688 Generic method to report unrecognized messages and optionally
save to file for later analysis
3 +#4687 msimprpl sending a message to a non-existent user should show
error in IM window, not in a popup dialog
2 +#4631 msimprpl normalize should lookup user IDs not on buddy list
1 -#2802 msimprpl implement prpl_info->normalize

Including closing five critical/major bugs:

1. #3237 msimprpl allocates 2 GB of memory and crashes (Windows)
2. #4621 MySpace IM causing program freeze at login attempt
3. #3222 Pidgin Crashes when i connect to myspace IM
4. #3281 msimppl leaks memory in statstring, username, key_context,
storing user info, user, MsimMessage dictionary parsing
5. #/3378 Group Sorting Problem

This concludes my QA work on msimprpl for class credit during the
Winter 2008 term. No longer will I commit a set number of hours per
week, but I'll still be around to work on msimprpl as spare time
permits. Anyways, all these bug fixes except for the nested
bold/italic/underline patch have made it into Pidgin 2.4.0, so this
should be a good release for MySpaceIM users.



Jeff Connelly




More information about the Devel mailing list