diff --git a/mozilla/mailnews/news/src/nsNntpService.cpp b/mozilla/mailnews/news/src/nsNntpService.cpp index 07a55e48fa4..fd5a0d759ed 100644 --- a/mozilla/mailnews/news/src/nsNntpService.cpp +++ b/mozilla/mailnews/news/src/nsNntpService.cpp @@ -294,14 +294,38 @@ nsNntpService::DisplayMessage(const char* aMessageURI, nsISupports * aDisplayCon rv = docShell->LoadURI(url, loadInfo, nsIWebNavigation::LOAD_FLAGS_NONE); } else + { + nsCOMPtr aStreamListener = do_QueryInterface(aDisplayConsumer, &rv); + if (NS_SUCCEEDED(rv) && aStreamListener) + { + nsCOMPtr aChannel; + nsCOMPtr aLoadGroup; + nsCOMPtr mailnewsUrl = do_QueryInterface(url, &rv); + if (NS_SUCCEEDED(rv) && mailnewsUrl) + { + if (aMsgWindow) + mailnewsUrl->SetMsgWindow(aMsgWindow); + mailnewsUrl->GetLoadGroup(getter_AddRefs(aLoadGroup)); + } + rv = NewChannel(url, getter_AddRefs(aChannel)); + if (NS_FAILED(rv)) return rv; + + rv = aChannel->SetLoadGroup(aLoadGroup); + if (NS_FAILED(rv)) return rv; + + nsCOMPtr aCtxt = do_QueryInterface(url); + // now try to open the channel passing in our display consumer as the listener + rv = aChannel->AsyncOpen(aStreamListener, aCtxt); + } + else rv = RunNewsUrl(url, aMsgWindow, aDisplayConsumer); } + } if (aURL) { *aURL = url; NS_IF_ADDREF(*aURL); } - return rv; }