annotate README.MTN @ 31518:b39b6d0008c5

upnp: Asynch-ronize the callbacks from UPnP to calling code. Refs #12387 I have no idea if this will resolve the crashes, but with the help of the packet capture, I /think/ these are correct. Short summary: it's possible for the callback to fire (and ar be freed) before the top-level function (purple_upnp_cancel_port_mapping) returns, even though cancel_port_mapping returns the now-invalid ar (which may lead to a subsequent use-after-free). At least one call path through the code that I think leads to this (backed up by one of the debug logs I looked at): purple_upnp_cancel_port_mapping(...) do_port_mapping_cb (has_control_mapping == TRUE, ar->add == FALSE) purple_upnp_generate_action_message_and_send(..., done_port_mapping_cb, ar) /* We fail to parse the URL (see some debug logs) */ done_port_mapping_cb ar->cb(FALSE, cbdata) return; return; return; return ar; ...and something which calls: do_port_mapping_cb(has_control_mapping == TRUE, ar->add == TRUE) ar->cb(FALSE, cbdata) g_free(ar) return;
author Paul Aurich <paul@darkrain42.org>
date Tue, 28 Dec 2010 05:37:20 +0000
parents e0bcb8cfda74
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16176
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1 If you plan to use Pidgin, Finch and libpurple from our Monotone repository,
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
2 PLEASE read this message in its entirety!
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
3
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
4 Pidgin, Finch, and libpurple are a fast-moving project with a somewhat regular
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
5 release schedule. Due to the rate of development, the code in our Monotone
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
6 repository undergoes frequent bursts of massive changes, often leaving behind
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
7 brokenness and partial functionality while the responsible developers rewrite
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
8 some portion of code or seek to add new features.
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
9
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
10 What this all boils down to is that the code in our Monotone repository _WILL_
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
11 sometimes be broken. Because of this, we ask that users who are not interested
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
12 in personally tracking down bugs and fixing them (without a lot of
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
13 assistance from the developers!) use only released versions. Since releases
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
14 will be made often, this should not prevent anyone from using the newest,
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
15 shiniest features -- but it will prevent users from having to deal with ugly
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
16 development bugs that we already know about but haven't gotten around to fixing.
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
17
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
18 If you are interested in hacking on Pidgin, Finch, and/or libpurple, please
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
19 check out the information available at: http://developer.pidgin.im
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
20
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
21 By far the best documentation, however, is the documented code. If you have
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
22 doxygen, you can run "make docs" in the toplevel directory to generate pretty
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
23 documentation. Otherwise (or even if you do!), the header files for each
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
24 subsystem contain documentation for the functions they contain. For instance,
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
25 conversation.h contains documentation for the entire purple_conversation_*
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
26 API, and account.h contains documentation for the purple_account_* API.
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
27
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
28 If you have questions, please feel free to contact the Pidgin, Finch, and
23182
e0bcb8cfda74 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@wiktel.com>
parents: 16176
diff changeset
29 libpurple developers by email at devel@pidgin.im or on IRC at irc.freenode.net
16176
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
30 in #pidgin. Please do as much homework as you can before contacting us; the
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
31 more you know about your question, the faster and more effectively we can help!
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
32
83ec0b408926 Beat some older documentation into submission.
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
33 Patches should be posted as Trac tickets at: http://developer.pidgin.im