Changeset 140154 in webkit


Ignore:
Timestamp:
Jan 18, 2013 8:28:40 AM (11 years ago)
Author:
sergio@webkit.org
Message:

[Soup] Frequent crashes on redirections
https://bugs.webkit.org/show_bug.cgi?id=107240

Reviewed by Martin Robinson.

We must ensure that the ResourceHandle has not being cancelled
before performing a redirect. This could happen while we close the
stream used to read the redirect response because it is done
asynchronously.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::redirectCloseCallback): also renamed res to result.

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r140150 r140154  
     12013-01-18  Sergio Villar Senin  <svillar@igalia.com>
     2
     3        [Soup] Frequent crashes on redirections
     4        https://bugs.webkit.org/show_bug.cgi?id=107240
     5
     6        Reviewed by Martin Robinson.
     7
     8        We must ensure that the ResourceHandle has not being cancelled
     9        before performing a redirect. This could happen while we close the
     10        stream used to read the redirect response because it is done
     11        asynchronously.
     12
     13        * platform/network/soup/ResourceHandleSoup.cpp:
     14        (WebCore::redirectCloseCallback): also renamed res to result.
     15
    1162013-01-18  Andrey Adaikin  <aandrey@chromium.org>
    217
  • trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp

    r140006 r140154  
    487487}
    488488
    489 static void redirectCloseCallback(GObject*, GAsyncResult* res, gpointer data)
     489static void redirectCloseCallback(GObject*, GAsyncResult* result, gpointer data)
    490490{
    491491    RefPtr<ResourceHandle> handle = static_cast<ResourceHandle*>(data);
    492492    ResourceHandleInternal* d = handle->getInternal();
    493493
    494     g_input_stream_close_finish(d->m_inputStream.get(), res, 0);
     494    if (d->m_cancelled || !handle->client()) {
     495        cleanupSoupRequestOperation(handle.get());
     496        return;
     497    }
     498
     499    g_input_stream_close_finish(d->m_inputStream.get(), result, 0);
    495500    doRedirect(handle.get());
    496501}
Note: See TracChangeset for help on using the changeset viewer.