Fix SoupSessionAsync to handle very early aborts better
If soup_session_abort() was called while we were doing async DNS, things could get confused and it would end up trying to use a freed SoupSocket. Fix that up by always properly using GCancellables during SoupSocket connection, so that we can cancel any outstanding operations if the socket is destroyed, and add a regression test for that. That then fixes a known leak in misc-test's early-abort case, but makes it crash instead, so we fix that by using a weak pointer in SoupSessionAsync to detect when the session has been destroyed before the callback is invoked. This then creates/reveals additional leaks in that test case, which require additional fixes. The relevant APIs are obviously lousy (in the way most pre-gio async APIs in GNOME were), but can't really be fixed at this point without breaking ABI. To be fixed in the gio-based API... https://bugzilla.gnome.org/show_bug.cgi?id=618641
parent
bcd81189
Please register or sign in to comment