annotate PLUGIN_HOWTO @ 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 db5a58aabe38
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15937
cc3c50816cc9 More gaim->whatever isms
Mark Doliner <mark@kingant.net>
parents: 14505
diff changeset
1 For information on writing a plugin for Purple, Pidgin or Finch, go
28380
db5a58aabe38 Wrap this file more consistently.
Richard Laager <rlaager@wiktel.com>
parents: 16176
diff changeset
2 http://developer.pidgin.im and click on API. From there, see the
db5a58aabe38 Wrap this file more consistently.
Richard Laager <rlaager@wiktel.com>
parents: 16176
diff changeset
3 HOWTOs in the "Related Pages" section.
14505
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
4
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
5 You can also generate this documentation locally by installing
15937
cc3c50816cc9 More gaim->whatever isms
Mark Doliner <mark@kingant.net>
parents: 14505
diff changeset
6 doxygen and graphviz dot, then running "make docs" in the
14505
7acebc9d043f [gaim-migrate @ 17225]
Mark Doliner <mark@kingant.net>
parents:
diff changeset
7 source tree. The documentation will be in the docs/html directory.