Closed Bug 46233 Opened 24 years ago Closed 21 years ago

Attachments downloaded again when saved

Categories

(MailNews Core :: MIME, defect, P3)

defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: phil, Assigned: Bienvenu)

References

Details

(Keywords: perf, Whiteboard: [nsbeta3-])

Attachments

(1 file, 3 obsolete files)

Using 2000-07-21-08 commercial build on NT 1. Send yourself a large HTML document as an attachment (not a web page) 2. Read the message, HTML document displays inline 3. Save the attachment Actual: it takes ~10 secs (esp. over a slow link) to download some or all of the message again, status bar says "downloading message..." Expected: since the HTML document was displayed inline, it should be quickly accessible to be saved.
Hmm...will have to see why the cache isn't stepping in here. Scott, any ideas? - rhp
Status: NEW → ASSIGNED
Target Milestone: --- → M18
QA Contact: lchiang → pmock
Hi Scott, This was the cacheing issue I was telling you about. Thanks! - rhp
Assignee: rhp → mscott
Status: ASSIGNED → NEW
performance bug...adding keywords
Keywords: nsbeta3, perf
mail triage marking nsbeta3-
Whiteboard: [nsbeta3-]
Assign it to myself.
QA Contact: pmock → fenella
To Esther..
QA Contact: fenella → esther
Target Milestone: M18 → ---
Occurs for all attachments... Very painful! I have noticed: if the attachment appears inline, right-click over the inline object and select "Save As..." will save to disk from the cache, no network activity at all, yet doing the same from the attachments pane reloads it from the network. This is a big problem if you are on a slow link and have multiple messages with large attachments. I spent over thirty minutes downloading some news, _twice_, saving the damned attachments. I'm on Linux. If this isn't nscatfood nothing is. BTW, sometimes the same reloading from the network occured in Nav4.x and was one of the more infuriating bugs.
OS: Windows NT → All
Hardware: PC → All
Summary: HTML attachment downloaded again when saved → Attachments downloaded again when saved
*** Bug 83979 has been marked as a duplicate of this bug. ***
Darin, Doug: you might like to take a peek and confirm the attachments are indeed in the cache and that the mailnews code can get to them; if not, this is not mscott's :)
Should this really be in the MIME component?
*** Bug 92875 has been marked as a duplicate of this bug. ***
*** Bug 87311 has been marked as a duplicate of this bug. ***
*** Bug 87344 has been marked as a duplicate of this bug. ***
Antonio, Seems reasonable to dupe this against bug 93208.
This is not a duplicate of bug 93208 - read the bug descriptions closely.
Ok I got it now. Thanks Hakan, bienvenu's comment also helped explain the difference in the other bug, what threw me was that they are about downloading messages more than once, vs the distinct differences here.
QA Contact: esther → trix
when mozilla open a mail from imap server,it will only cache mail body,so when save the attachment,mozilla will reload from imap server for attachment. So i want to cache attachment when mozilla run in mimemoz2.cpp,but i can't get the inputstream object,i seriously want to fix this bug,but now i really need afflatus.who can give some advice!!!!!
David: is this really MIME? Phil: Do you see this on IMAP and/or POP?
This is really imap, and Phil is long gone. I would think that this is bug is invalid in most cases now that we use the memory cache (it would still exist in cases where the message had both inline and non-inline parts, because those messages don't get put in the memory cache). I don't know how to fix that case, other than putting the html page in the memory cache like we do for images, or, put the partial message in the memory cache and handle requests for the attachments we have downloaded by reading from the memory cache. I don't know how to do the former, and the latter is extremely dangerous because if we put partial messages, in the memory cache, we have to be extremely careful not to think we have the whole message in the cache for things like forward, etc. I don't recommend either approach.
Hi Bienvenu,i add a patch,this patch can fix thix bug for imap4,so please rv my patch,and please give me some advice.this patch can make mozilla open mail body from cache,when i save a attachment.but when mozilla open a mail from a IMAP4Rev1 server,if the mail have attachment,mozilla will only load mail content,and siplay mail,but mozilla didn't load mail's attachment,so i can't cache attachment before i save the mail's attachment. Hi Mscott,please Assign this bug to me,and please rv my patch
I've explained this in a private e-mail a week ago, but I'll put the info in here: After stepping through the code, it looks to me like the problem is that for html attachments, we're downloading the whole message (instead of just the html part) to save the html attachment. I believe this is because the url for the attachment is of a form that we are not parsing correctly in nsImapService::FetchMimePart. If you set a breakpoint here, and compare the urls for saving a .exe attachment vs a .html attachment, you'll see the difference. One possibility is to fix the url stored in the attachment data for the .html attachment to be like the .exe attachment url. I'm not familiar with this code, so I'm not sure why they're different. good format: "imap-message://bienvenu@nsmail-1/Personal#7568?section=2&part=1.2" bad imap-message://bienvenu@nsmail-1/Personal#7318imap://bienvenu@nsmail-1:993/fetch>UID>/Personal>7318?part=1.2" the good one is for non-inline attachments like .exe files. The bad one is for a .html attachment. I tried a jpeg as well, and it had the bad format:- "imap-message://bienvenu@nsmail-1/Personal#150imap://bienvenu@nsmail-1:993/fetch>UID>/Personal>150?part=1.2" Note that the "bad format" is the imap url format with the fetch instruction coded in.
Hi Bienvenu,i don't know whether,you can see my comment,but i will explain what elements of my fix. In imap4,mozilla will load all mail body from imap4 server and pick up the attachment from mail body ,when a attachment be saved in the first,so my fix is do that,when save a attachment,i will force mozilla load mail body from cache,because mozilla will cache all mail content when i open a mail,so after i open a mail,all of the mail's content is cached by mozilla. In imap4rv1 ,mozilla will only load part of mail,that can be displayed,so i can't fix it in here,because i can't load all of mail'content from cache. Now have some problem, When i add your patch for bug93208,mozilla won't display all img in imap4rv1,i hope you can see my patch,and tell me how to judge the types of the imap server in nsImapMockChannel::OpenCacheEntry,because your patch is for imap4rv1,i must avoid conflict with your patch.
I'll just point you at my previous comment again. I don't think the way you're fixing this is the right way to fix this. The way to fix this is to fix the attachment url. At least that's the approach we're going to try.
i test this fix in imap4,all attachment can load from cache,so this way is force mozilla pick up attachment from mail body in the cache,but in imvp4rv1,i can't do it.i notice the "section" in imap url,i will try to debug it.
with imap4rev1 servers (the vast majority of servers out there, btw), we fetch the body structure of the message and don't fetch the non-inline parts when we display the message. This makes things very complicated, as I've explained in this bug, and related bugs.
In imap4rv1,i can't get non-inline parts from cache,but in imap4,i can do it,so my patch is for imap4,but i don't know how do judge the types of the imap server in nsImapMockChannel::OpenCacheEntry?
Hi bienvenu,thank for your advice,i change my patch to ignore img url,so when mozilla will display img,i don't change url,i think url is a key in cache,we can get mail's data from cahce with key,so in imap4,when mozilla display a mail ,it will cache all mail'data that include non-inline parts,so i will force mozilla fetch attachment from cache,in imap4rv1,when mozilla display a mail,it will only mail body and inline parts,so when i save a attachment ,mozilla will load from imap server,but all inline parts will cache,like html file,so i can force mozilla save the html file from cache,so i must change ths key when mozilla query cache with key.
this change is to avoide conflict with bug93208's patch,so please rv my patch!
again, I believe the correct fix is to fix the code that's generating these part urls in the attachment menu, not to patch the imap cache code to deal with the mal-formed urls.
Looks like this one is hibernating. I'm seeing this bug with uuencoded attachments. When I open the message from IMAP server, Mozilla loads entire encoded text attachment too. Save the attachment and it happens again. If you get impatient and move into 2nd message while the attachment from the 1st one is downloading, you get a partial download.
*** Bug 176088 has been marked as a duplicate of this bug. ***
Related: Bug 181842
Just to confirm that this bug still exists in release 1.2. For people working on slow links, this merits a priority > P3 -- try it sometime. Maybe the following should be an RFE (or even 2 RFEs), but I will drop them here since they are so closely related and could potentially be addressed at the same time as this bug: 1) An option to not (automatically) download all attachments, or just not download attachments greater then N bytes would be welcome for users on slow links. 2) When an attachment is displayed in the mail window, there appears to be no way to get back to the initial mail without selecting another mail (if there is one) then re-selecting the mail you want to see.
*** Bug 144346 has been marked as a duplicate of this bug. ***
My testings show that attachments in a news group message ARE downloaded with the message. The text of the message is NOT displayed until all of the message plus all attachments are loaded. Hitting <ctrl-u> to get the source code, shows that the attachment(s) are there, included inside the message. If I want to save the attachment, a zip file for example, Mozilla proceed to download a new copy of it. Alain
is Bug #131586 copy of this one ?
There may be a relation or some similarity. This one concern attachements in news messages. The attachements ARE downloaded before vewing the message, then again if you want to save them. An image saved by the right menu is instantly saved, but redownloaded if you then save it using the attachment list.
as I see it probably same patch could fix both problems if before downloading message there is verification is it localy stored (and if it is verify has it been shanged since)
This one is for news messages? I didn't know that.. FWIW, if you maximize the attachment by double-clicking on it, it's NOT downloaded again for the new window. You may then do "save page" and it's saved without downloading again. Concerning IMAP mail.
It is related to bug 183068 and 181842.
This issue is also a shocker for multimegabyte images being displayed inline. They must be downloaded again to be saved, and given the slow download speeds (see bug 182383) can be major slowdown. I've seen a user sit for 30 seconds waiting for a message with a large image to download, then have to wait for the same time again after saving the image to disk. I'm fairly sure the server in question (MDaemon 3) is NOT imap4r1 compatable, however speeds aren't much better working from Cyrus in some quick tests I did. Craig Ringer
Um, is it just me, or has this bug been fixed? Using Save Image from a binaries newsgroup message with an image attachment, the image is being saved immediately without a re-download. Can anyone confirm? Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5b) Gecko/20030820
Mike, if you save the image by right clicking on the image itself, we get the image from the memory cache. But, if you use the attachment list, and save as from there, we don't get the attachment from the memory cache, because, as I said before, the url in the attachment menu doesn't match what we've put in the memory cache.
Assignee: mscott → bienvenu
Eek, I just spent half an hour saving 24 attachments of a message. All the attachments were shown inline (text and jpg's) and it took initially about 65 seconds to load the message to display. We need to get this fixed..
I'll try to fix the URI's run when we do save so that they hit the memory cache correctly.
Status: NEW → ASSIGNED
I poked around a bit and found that we mess a perfectly good url in nsImapService.cpp around line 600 by adding extra stuff into it. I changed it so that only "?header=print" is appended if printing and it seemed to cure the two cases I tried. In nsMessenger::SaveAttachment, I also removed a suspicious assignment of fullMessageUri to messageUri, but didn't have time to check it thoroughly yet. Thoughts?
Ere, you're right about the first part. I'm not sure the assignment is suspicious, or, rather, it might be the whole problem - I'll have to step through the code, and try it with local mail as well.
OK, I think that in some cases the code ~line 600 of nsImapService.cpp is required, e.g., double clicking on an attachment in the attachment list.
would soulution for this solve also bug #131586 it is not that only attachments are downloaded again and again but whole messages are redownloaded on every change of focus (and again solving that issue would probably solve this one too :)
That raises the question why the is URI different when double-clicking and when saving. I think it shouldn't make any difference for FetchMimePart().
yes, I'll have to sit down and figure out the various code paths.
I think the problem is here in nsMessenger::SaveAttachment - mimePart ends up being the whole fetch url, so fullMessageUri is ends up being two uri's concatenated together. { PRInt32 sectionPos = urlString.Find("?section"); nsCString mimePart; urlString.Right(mimePart, urlString.Length() - sectionPos); // ###this is bogus - this is much more than the mime part - it's the whole uri fullMessageUri.Append(mimePart); messageUri = fullMessageUri.get();
I don't know if this fixes the problem, but it prevents us from generating that very wrong uri.
Attachment #131711 - Flags: review?(ere)
*** Bug 181842 has been marked as a duplicate of this bug. ***
*** Bug 210996 has been marked as a duplicate of this bug. ***
Attached patch proposed fixSplinter Review
this fixes it so that both save as and open get the attachments from the memory cache.
Attachment #67388 - Attachment is obsolete: true
Attachment #68096 - Attachment is obsolete: true
Attachment #131711 - Attachment is obsolete: true
Attachment #139278 - Flags: superreview?(mscott)
Attachment #139278 - Flags: superreview?(mscott) → superreview+
fix checked in.
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Does this fix in any way affect or improve the way e-mails with attachments are moved from the inbox to the local folders (or another account's folder)? Sorry for bugspam, but a query for "attachment local folders" wasn't successful.
no, it has no effect on that. Moving messages to local folders or other accounts fetches the whole message. If it's in the memory cache, the cached copy should be used...
*** Bug 119049 has been marked as a duplicate of this bug. ***
David, think we should put this on the M4 branch?
Blocks: 230700
yes, I'll put it on the m4 branch.
fixed on m4 branch.
Attachment #131711 - Flags: review?(ere)
Product: MailNews → Core
Product: Core → MailNews Core
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: