Closed Bug 16538 Opened 25 years ago Closed 25 years ago

[DOGFOOD] Can't copy messages from imap to pop

Categories

(MailNews Core :: Networking, defect, P3)

x86
Windows NT
defect

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: mscott, Assigned: mscott)

References

Details

(Whiteboard: [PDT ])

I was trying to a copy a message from my inbox into a folder two levels deep (i.e. Work --> Seamonkey). The message never got copied and remains in my inbox. This is an imap account using a commercial build from 10/13. Marking as dogfood to get on the PDT radar.
Status: NEW → ASSIGNED
This sounds like a regression to me. It used to work.
QA Contact: lchiang → huang
Target Milestone: M11
Clicking on Alerts in Messenger leads to: OpenURL from XUL Error: Unknown host: http://[object XULElement]/
Used 10-15-12-M11 build on WinNT & Win98: Used "Message -> Copy message" menu to perform this test. Win98: 1)For IMAP Mail- This problem sometimes happened, sometimnot...(strange!) 2)For Local Mail - Cannot copy msgs to local. WinNT: 1)For IMAP mail- Cannot copy msgs to IMAP mail. 2)For Local- Cannot copy msgs to local. There is another bug#16366 opened for "Message -> Copy message" menu.
The copy was succesfully when looked into the imap log. May be we are not issuing noop when reselecting the destination folder. The news message header seems never gets downloaded. cc'ing bienvenu.
If you haven't opened the destination folder, you shouldn't have to issue a NOOP. Plus, this wouldn't explain any problem with local copying.
But I think Jeff is right about a NOOP not getting done for the second time we open a folder.
Ah, I think the front end never tries to update the imap folder the second time you open it. No imap url gets run at all.
I kind of suspecting that rdf seems not doing the right thing.
I don't think it's RDF, so much as mail/news - RDF doesn't think it needs to get new messages. But when Scott's back, he can comment.
I've only tried local to local which worked for me and this bug implies doesn't work. can anyone else get local to local to work? I also tried imap to local and that didn't work. I get a few assertions when I try doing this. The next time I try this I get no assertions but no copy either. Finally after all of this I tried doing local to local again and that didn't work. Perhaps there is some problem when doing the 2nd copy?
It might be useful to check if the messages show up after you shutdown and restart. If local copy is not updating the database, or we're not asking for new headers in the destination database, that would explain this problem.
Actually the original bug I filed here involved imap from one folder to another under the same server. That failed for me. And starting up and shutting down, the message was still in my inbox and was never copied....
That should work as I looked into the bug yesterday.
With some more playing around I've determined I can copy local to local as much as I want. But as soon as I do an Imap to local all copying afterwards fails. Starting up and shutting down doesn't make the message show up. Here are the 2 assertions I get when I do my first Imap to local: NTDLL! 77f7629c() nsDebug::Assertion(const char * 0x014f3b04 ??_C@_0BG@LEKL@QueryInterface?5needed?$AA@, const char * 0x014f3b20 ??_C@_0BI@MMJM@query_result?5?$DN?$DN?5mRawPtr?$AA@, const char * 0x014f3e10 ??_C@_0CB@MCGB@?4?4?2?4?4?2?4?4?2dist?2include?2nsCOMPtr?4h@, int 487) line 280 + 13 bytes nsCOMPtr<nsIStreamObserver>::Assert_NoQueryNeeded() line 487 + 36 bytes nsCOMPtr<nsIStreamObserver>::operator=(nsIStreamObserver * 0x042e4b10) line 534 nsAsyncStreamObserver::Init(nsIStreamObserver * 0x042e4b10, nsIEventQueue * 0x010702c0) line 57 NS_NewAsyncStreamListener(nsIStreamListener * * 0x0359c700, nsIEventQueue * 0x010702c0, nsIStreamListener * 0x042e4b10) line 480 + 16 bytes nsIOService::NewAsyncStreamListener(nsIOService * const 0x010c4580, nsIStreamListener * 0x042e4b10, nsIEventQueue * 0x010702c0, nsIStreamListener * * 0x0359c700) line 364 + 17 bytes nsImapProtocol::SetupWithUrl(nsIURI * 0x042e3c84, nsISupports * 0x042e4b10) line 564 nsImapProtocol::LoadUrl(nsImapProtocol * const 0x0359c6a8, nsIURI * 0x042e3c84, nsISupports * 0x042e4b10) line 1237 + 16 bytes nsImapIncomingServer::GetImapConnectionAndLoadUrl(nsImapIncomingServer * const 0x022d7ac0, nsIEventQueue * 0x010702c0, nsIImapUrl * 0x042e3c80, nsISupports * 0x042e4b10) line 223 + 25 bytes nsImapService::GetImapConnectionAndLoadUrl(nsIEventQueue * 0x010702c0, nsIImapUrl * 0x042e3c80, nsISupports * 0x042e4b10, nsIURI * * 0x0012dc1c) line 1310 + 38 bytes nsImapService::FetchMessage(nsImapService * const 0x03167e60, nsIImapUrl * 0x042e3c80, nsIImapUrl::nsImapAction nsImapMsgFetch, nsIMsgFolder * 0x03e583cc, nsIImapMessageSink * 0x03e58454, nsIURI * * 0x0012dc1c, nsISupports * 0x042e4b10, const char * 0x042e3e00, int 1) line 402 + 32 bytes nsImapService::CopyMessage(nsImapService * const 0x03167e64, const char * 0x042e3e70, nsIStreamListener * 0x042e4b10, int 0, nsIUrlListener * 0x00000000, nsIURI * * 0x0012dc1c) line 249 + 73 bytes nsMsgLocalMailFolder::CopyMessageTo(nsIMessage * 0x038e52bc, nsIMsgFolder * 0x030ee53c, int 0) line 1854 nsMsgLocalMailFolder::CopyMessages(nsMsgLocalMailFolder * const 0x030ee53c, nsIMsgFolder * 0x03e583cc, nsISupportsArray * 0x042e4ce0, int 0, nsITransactionManager * 0x022d8900, nsIMsgCopyServiceListener * 0x00000000) line 1392 + 53 bytes nsMsgCopyService::DoNextCopy() line 224 + 81 bytes nsMsgCopyService::DoCopy(nsCopyRequest * 0x042e4ed0) line 176 + 8 bytes nsMsgCopyService::CopyMessages(nsMsgCopyService * const 0x03f5a590, nsIMsgFolder * 0x03e583cc, nsISupportsArray * 0x042e4f30, nsIMsgFolder * 0x030ee53c, int 0, nsIMsgCopyServiceListener * 0x00000000, nsITransactionManager * 0x022d8900) line 374 + 12 bytes nsMsgFolderDataSource::DoCopyToFolder(nsIMsgFolder * 0x030ee53c, nsISupportsArray * 0x042e4fd0, nsITransactionManager * 0x022d8900, int 0) line 1096 nsMsgFolderDataSource::DoCommand(nsMsgFolderDataSource * const 0x022dbfb0, nsISupportsArray * 0x042e4f80, nsIRDFResource * 0x022db4f0, nsISupportsArray * 0x042e4fd0) line 593 + 32 bytes CompositeDataSourceImpl::DoCommand(CompositeDataSourceImpl * const 0x024e6e80, nsISupportsArray * 0x042e4f80, nsIRDFResource * 0x022db4f0, nsISupportsArray * 0x042e4fd0) line 1293 + 24 bytes nsMessenger::DoCommand(nsIRDFCompositeDataSource * 0x024e6e80, char * 0x019e6840, nsISupportsArray * 0x042e4f80, nsISupportsArray * 0x042e4fd0) line 682 + 29 bytes nsMessenger::CopyMessages(nsMessenger * const 0x022d6030, nsIRDFCompositeDataSource * 0x024e6e80, nsIDOMXULElement * 0x0247d4f0, nsIDOMXULElement * 0x03f61c60, nsIDOMNodeList * 0x024d6570, int 0) line 812 + 56 bytes XPTC_InvokeByIndex(nsISupports * 0x022d6030, unsigned int 11, unsigned int 5, nsXPTCVariant * 0x0012e17c) line 135 nsXPCWrappedNativeClass::CallWrappedMethod(JSContext * 0x02082260, nsXPCWrappedNative * 0x022d9b60, const XPCNativeMemberDescriptor * 0x022d9df4, nsXPCWrappedNativeClass::CallMode CALL_METHOD, unsigned int 5, long * 0x03577e28, long * 0x0012e320) line 791 + 43 bytes WrappedNative_CallMethod(JSContext * 0x02082260, JSObject * 0x012cb410, unsigned int 5, long * 0x03577e28, long * 0x0012e320) line 186 + 34 bytes js_Invoke(JSContext * 0x02082260, unsigned int 5, unsigned int 0) line 672 + 26 bytes js_Interpret(JSContext * 0x02082260, long * 0x0012eb98) line 2248 + 15 bytes js_Invoke(JSContext * 0x02082260, unsigned int 1, unsigned int 0) line 688 + 13 bytes js_Interpret(JSContext * 0x02082260, long * 0x0012f3cc) line 2248 + 15 bytes js_Invoke(JSContext * 0x02082260, unsigned int 1, unsigned int 2) line 688 + 13 bytes js_InternalCall(JSContext * 0x02082260, JSObject * 0x012ebd90, long 19840408, unsigned int 1, long * 0x0012f54c, long * 0x0012f504) line 765 + 15 bytes JS_CallFunction(JSContext * 0x02082260, JSObject * 0x012ebd90, JSFunction * 0x03f63da0, unsigned int 1, long * 0x0012f54c, long * 0x0012f504) line 2653 + 32 bytes nsJSContext::CallFunction(nsJSContext * const 0x020823d0, void * 0x012ebd90, void * 0x03f63da0, unsigned int 1, void * 0x0012f54c, int * 0x0012f548) line 231 + 39 bytes nsJSEventListener::HandleEvent(nsIDOMEvent * 0x042e4d90) line 103 + 48 bytes nsEventListenerManager::HandleEvent(nsIPresContext & {...}, nsEvent * 0x0012f844, nsIDOMEvent * * 0x0012f80c, unsigned int 7, nsEventStatus & nsEventStatus_eIgnore) line 1210 + 27 bytes nsXULElement::HandleDOMEvent(nsXULElement * const 0x03f61c70, nsIPresContext & {...}, nsEvent * 0x0012f844, nsIDOMEvent * * 0x0012f80c, unsigned int 1, nsEventStatus & nsEventStatus_eIgnore) line 2663 nsMenuFrame::Execute() line 1173 nsMenuFrame::HandleEvent(nsMenuFrame * const 0x034f2810, nsIPresContext & {...}, nsGUIEvent * 0x0012fbcc, nsEventStatus & nsEventStatus_eConsumeDoDefault) line 278 PresShell::HandleEvent(PresShell * const 0x020aa674, nsIView * 0x03fb7100, nsGUIEvent * 0x0012fbcc, nsEventStatus & nsEventStatus_eConsumeDoDefault) line 2173 + 38 bytes nsView::HandleEvent(nsView * const 0x03fb7100, nsGUIEvent * 0x0012fbcc, unsigned int 8, nsEventStatus & nsEventStatus_eConsumeDoDefault, int & 0) line 834 nsView::HandleEvent(nsView * const 0x020aaaa0, nsGUIEvent * 0x0012fbcc, unsigned int 28, nsEventStatus & nsEventStatus_eConsumeDoDefault, int & 0) line 819 nsViewManager::DispatchEvent(nsViewManager * const 0x020a90e0, nsGUIEvent * 0x0012fbcc, nsEventStatus & nsEventStatus_eConsumeDoDefault) line 1739 HandleEvent(nsGUIEvent * 0x0012fbcc) line 63 nsWindow::DispatchEvent(nsWindow * const 0x03f61984, nsGUIEvent * 0x0012fbcc, nsEventStatus & nsEventStatus_eIgnore) line 401 + 10 bytes nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012fbcc) line 422 nsWindow::DispatchMouseEvent(unsigned int 301, nsPoint * 0x00000000 {x=??? y=???}) line 3394 + 21 bytes ChildWindow::DispatchMouseEvent(unsigned int 301, nsPoint * 0x00000000 {x=??? y=???}) line 3612 nsWindow::ProcessMessage(unsigned int 514, unsigned int 0, long 786463, long * 0x0012fdf4) line 2626 + 24 bytes nsWindow::WindowProc(HWND__ * 0x028305e6, unsigned int 514, unsigned int 0, long 786463) line 579 + 27 bytes USER32! 77e71820() NTDLL! 77f7629c() nsDebug::Assertion(const char * 0x019e96bc, const char * 0x019e96a8, const char * 0x019e9664, int 163) line 280 + 13 bytes nsCopyMessageStreamListener::OnStartRequest(nsCopyMessageStreamListener * const 0x042e4b10, nsIChannel * 0x042e3b80, nsISupports * 0x00000000) line 163 + 38 bytes nsOnStartRequestEvent::HandleEvent(nsOnStartRequestEvent * const 0x042e5200) line 242 nsStreamListenerEvent::HandlePLEvent(PLEvent * 0x042e51b0) line 169 + 12 bytes PL_HandleEvent(PLEvent * 0x042e51b0) line 534 + 10 bytes PL_ProcessPendingEvents(PLEventQueue * 0x010701f0) line 493 + 9 bytes _md_EventReceiverProc(HWND__ * 0x00fa02fa, unsigned int 49305, unsigned int 0, long 17236464) line 963 + 9 bytes USER32! 77e71820() 010701f0()
And yes, copying from Imap to imap is working for me. I know this is offtopic, but opening my Imap Inbox is much slower for me today than when I left. Did something happen or is it the server?
copying local to imap works for me as well.
I think the reason it doesn't work is becaues in the imap to local case: NS_IMETHODIMP nsCopyMessageStreamListener::OnStartRequest(nsIChannel * aChannel, nsISupports *ctxt) isn't passed an nsIURI through ctxt. therefore the whole copy operation is ignored.
I take that back. It fails because ctxt is null and therefore can't be QI'd for an nsIURI.
At this point I need help because I'm not too familiar with necko terms. In the following line in nsImapProtocol: m_channelListener->OnStartRequest(m_mockChannel, m_channelContext); m_channelContext is null which is why ctxt is null later on in the copy stream listener. It seems that when we set up the copy we need to make m_channelContext be the uri passed in. This is in nsresult nsImapProtocol::SetupWithUrl. Anyway, that's just a guess.
mscott is the man. :-)
(The part about IMAP being slow is briefly mentioned in http://bugzilla.mozilla.org/show_bug.cgi?id=16061. I may have to open a new bug on that)
Whiteboard: [PDT+]
Summary: [DOGFOOD] Can't copy messages from one imap folder to another → [DOGFOOD] Can't copy messages from imap to pop
Updating the summary to reflect the real problem.
Gee everyone keeps trying to change what the bug I filed represents =). My problem is copying from imap TO imap not pop. The summary I put there was the one that reflects the problem I was reporting. If there's another bug going from imap to pop,let's handle that in a separate bug. Thanks.
But copying from message from imap to imap works for me.
And if you don't agree feel free to change it back.
Whiteboard: [PDT+] → [PDT ]
Your right Jeff...my bad. The problem I was reporting in the 10/13 release builds (that's the current version I use for daily dogfood use) appears to be fixed when I try it on the current tip. f
Blocks: 16950
I have a fix for this problem that I just emailed Jeff for a code review. I'll have David B. take a look at it too. Basically I modified FetchMessage in nsImapService to stream the message out to the passed in stream listener the same way we do it for displaying a message. That is, we create a channel and call AsyncRead on the channel.
Assignee: jefft → mscott
Status: ASSIGNED → NEW
Way to go Scott. Reassign to mscott....
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
I just checked in the fix.
Status: RESOLVED → VERIFIED
Passed retesting on 10-22-09-M11/WinNT: Copy msgs from IMAP account to POP account - Passed. Also verified copying msgs from IMAP account to IMAP account - Passed. Both performed on the same server but different accounts. Mark Verified.
Product: MailNews → Core
Product: Core → MailNews Core
You need to log in before you can comment on or make changes to this bug.