Closed Bug 100022 Opened 23 years ago Closed 20 years ago

PAC: first page/homepage load fails (b/c automatic proxy configuration is slower than first HTTP request)

Categories

(Core :: Networking, defect, P4)

defect

Tracking

()

VERIFIED FIXED
mozilla1.8beta2

People

(Reporter: luolong, Assigned: darin.moz)

References

Details

Attachments

(5 files, 1 obsolete file)

From Bugzilla Helper: User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:0.9.4+) Gecko/20010912 BuildID: 2001091203 Reproducible: Always Steps to Reproduce: 1. Configure the browser to use Autometic proxy configuration script, open Homepage on startup and set homepage to be somewhere outside Your firewall/proxy. 2. Exit Mozilla completely. 3. Run Mozilla. Actual Results: I get message, saying the URL was not found. When I reload or try again (without closing Mozilla) - it works. Expected Results: The homepage should have been loaded the first time. I am sitting behind a quite restrictive firewall and thus rely heavily on the proxy server configuratin. This kind of behaviour has forced me previously to go back to fixed proxy configurations, assuming automatic configuration does not work. And several of my collegues have dumped Mozilla for the very same reason...
My guess as to what's going on is that you're hitting a race condition -- the PAC file is loaded asynchronously on startup. If this takes a little while, it's possible that the http request to fetch your homepage goes into PAC resolution before the PAC has been fully retrieved/digested/etc. In this case, the nsProxyAutoConfig will default to a direct connection -- so the home page doesn't load. I'll try to confirm that this is the case when I get a chance. See also bug 97605, which is not entirely related.
Yes - that was my guess allso even before I started to report this bug. Looking at the (somewhat) related PAC: bugs confirmed my suspicions. This bug has existed for quite some time - I wander that I was the first to report it though.
another vaguely related bug is bug 83894 -- where a similar problem prevents an easy fix. I'm going to go ahead and mark this NEW, even though I can't reproduce it -- the race in the code is pretty clear. I think the solution darin proposed to bug 97605 might take care of this as well (judging by the phrase "PAC download would then become an app modal operation"), but I'm not sure. darin?
Status: UNCONFIRMED → NEW
Ever confirmed: true
QA Contact: benc → pacqa
it's possible that that could be the problem... is the problem just a slow-to- respond PAC server?
I've done a quick packet capture on my system (I'm getting this exact same problem), and mozilla is doing the DNS lookup for the homepage in the middle of receiving the .PAC file from the server. e.g. (Timestamps in seconds) 3.271317 Mozilla initiates TCP connection to server holding PAC file 3.272612 TCP handshake completes 3.274658 Mozilla issues DNS lookup request to internal DNS server for external home page 3.276537 Mozilla receives PAC file from server 3.276878 Mozilla re-issues DNS lookup request to internal server
PAC
Assignee: neeti → serge
correction to Additional Comments From Chase Tingley 2001-09-17 09:39 >another vaguely related bug is bug 83894 bug 83984 has some discussion about properly pac loading implementation, unfortunately, there is found no easy solution fro this problem yet.
to default owner
Assignee: serge → new-network-bugs
Temporarily "futuring" all PAC&SOCKS bugs to clear new-networking queue. I will review later. (I promise) If you object, and can make a case for a mozilla 1.0 fix, please reset milestone to "--" or email me.
Target Milestone: --- → Future
*** Bug 146545 has been marked as a duplicate of this bug. ***
comment #5 seems to be the key piece of data to these scattered, but credible complaints about PAC loading problems that are fixed w/ reload.
Keywords: helpwanted
Target Milestone: Future → ---
Target Milestone: --- → Future
This appears to have got *much* worse in the beta of 1.2 (build 20020826) It now takes several attempts of clicking "home" before Mozilla finally manages to get to my home page. This is on Win2K
if you are seeing this bug, you might actually need to reinstall mozilla from scratch (after completely deleting the installation directory), or at least try deleting components/compreg.dat. please comment if this doesn't help.
Happens on XP with Build 2002111211 too.
I have the same problem with build 20030125 on W2K. This, bug #180811, and bug #188006 all appear to be dupes of bug #83984. Since this one has the most votes and the best description, I'll add my vote here in the hopes that it will do some good. This bug will force my corporation to go to IE if it's not fixed soon!
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3b) Gecko/20030125 Did some network sniffing today and discovered the following behaviour: - ISA-Server has some rules to allow proxying only after NTLM or Basic authentication - Mozilla tries to get the default automatic configuration URL (http://<myisaserver>:8080/array.dll?Get.Routing.Script) - Mozilla gets a 401 (authorization required) but never asks the user for basic credentials Then I copied the automatic configuration script to an anonymously reachable webserver into PAC.TXT and entered the URL into Mozilla. With this setup it works just fine!
I guess that since the request for the PAC file is being made outside of a browser window, there's no handler to deal with 401 or any other other errors that may prevent the PAC from being loaded. I'm just trying to think if there are any other instances where moz makes an http request that doesn't result in the response being displayed in a browser window.. (any suggestions?) When an error occurs in loading the html page for any other window, the process is modal, and blocks until it gets a 200, or presents a authorisation box prompt etc etc.. In your situation (needing authorisation to get the PAC file), what would you suggest would be a reasonable thing for mozilla to do ? I don't know what IE does - and you probably do, but my guess is that you would end up with either a blank initial browser window that gets blocked by the PAC loading, which in turn is blocked by an authorisation dialog, or .... you would see just the authorisation diaglog. The crux is that the PAC loader needs to block the page loader. It shouldn't be THAT hard to get that code to work, as page loading already blocks in several situations - just modify that code to check for a boolean that says whether or not the PAC config is stable or not. On initial startup, and whenever someone hits the "reload" in the proxy config dialog in preferences, that value would be false. It should be set true whenever the PAC has successfully loaded, or when loading has been aborted, and should stay false during PAC load. Also - comment 13 implies that this bug has already been addresses - can someone confirm this either way ?
I just had a thought... what about view document source ? At the moment, there's a bug open that complains that view source often reloads the URI, rather than showing the source of the document in the appropriate window... while that bug still exists, it should be possible to use it to find out if the authorisation required diaglog can work in places other than a normal browser window. I'll see if I can do it, although I don't think the 'view source reloads' is always reproducable.. but I'll give it a shot anyway.
damn.. can't seem to reproduce that other bug.. even if I post the http query to the same URL as the current page.. which is what I think the problem was There must be some other place in mozilla other than the browser and PAC that makes an http request.. that can be used to check if the authorisation handler works anywhere else.. but my mind has gone blank
Attached file Simple PAC file
Simple PAC file used for testing on our network
Re: comment #13 - this doesn't help Re: comment #16 - neither our (Netscape/iPlanet) web server that holds the proxy.pac nor our (Netscape) proxy servers require end user authentication. Just for the fun of it, I took our PAC file, simplified it ridiculously (see attachment), and copied it to another (IIS) web server. The problem persisted. However, if the file sits on my local hard drive, my home page does load when Mozilla first starts.
I don't know if this information is of any use but I have been using Mozilla since version 1.0 with the auto proxy script enabled with absolutely no problem. In fact Mozzie often sorts out the proxies faster than IE.
-> suresh
Assignee: new-network-bugs → suresh
Still using 20030128 build on W2K. I start on a system with three Netscape 4.79 profiles. After installing Mozilla, I import one of those profiles (the third in the list). The home page is imported from the profile, while the PAC file location is read from all.js. When I start Mozilla the second time (so the Mozilla/Start page isn't loaded), the problem occurs. It occurs on all restarts thereafter. However, if I create another profile (not imported from NS4 - dunno if it matters), then all of a sudden, I can start Mozilla using either profile, and the home page will load. This seems repeatable - I've killed all my Mozilla profiles and repeated the sequence.
addendum to #24: If I delete the 'other' profile, the problem returns on the first profile. If I create another new profile, it goes away. Seems like I've found a workaround, but damned if I know why it works.
Sorry for the spam-effect. Hopefully, this'll be the last note for now. If I start the Profile Manager, and start my profile from there, the problem doesn't occur, whether or not I've got two Mozilla profiles. I assume that starting via the Profile Manager gives the PAC file time to load, clearing the race condition.
Summary: PAC: connection to page refused on browser startup when Automatic Proxy configuration enabled → PAC: connection to page refused startup
*** Bug 152324 has been marked as a duplicate of this bug. ***
Summary: PAC: connection to page refused startup → PAC: connection to page refused at startup
*** Bug 200468 has been marked as a duplicate of this bug. ***
*** Bug 202232 has been marked as a duplicate of this bug. ***
(I think this is the original bug, but I thought there were more dupes) Thinking about this... if PAC's default value is "DIRECT", and so a slow PAC load is allowing the first necko request to access the default PAC, then why not have PAC manually set the PAC file to some blocking value/mode, until the PAC request is returned?
Keywords: 4xp
Summary: PAC: connection to page refused at startup → PAC: first page load fails (b/c PAC is slower than first HTTP request)
*** Bug 140038 has been marked as a duplicate of this bug. ***
*** Bug 208828 has been marked as a duplicate of this bug. ***
*** Bug 208901 has been marked as a duplicate of this bug. ***
I'm using Mozilla 1.4RC3 and I am seeing this bug also. Nothing huge, but definately an annoyance.
I think we can solve this bug using nsIChannel::Open to load the PAC file. I will try to make this happen for 1.5 final.
Assignee: suresh → darin
Depends on: 192284
Priority: -- → P1
Target Milestone: Future → mozilla1.5beta
*** Bug 215502 has been marked as a duplicate of this bug. ***
Status: NEW → ASSIGNED
Target Milestone: mozilla1.5beta → mozilla1.6alpha
*** Bug 216329 has been marked as a duplicate of this bug. ***
*** Bug 218390 has been marked as a duplicate of this bug. ***
this affects all platforms.
OS: Windows NT → All
Hardware: PC → All
Target Milestone: mozilla1.6alpha → mozilla1.6beta
-> moz 1.7b
Target Milestone: mozilla1.6beta → mozilla1.7beta
Priority: P1 → P4
(In reply to comment #15) > This, bug #180811, and bug #188006 all appear to be dupes of bug #83984. Yeah, IMO were should be a dependency between bug 83984 and this bug.
hmm.. i think they are different bugs. bug 83984 is about lazily initializing PAC. this bug is about completely initializing PAC in time to satisfy the first request for something that should be inspected by the PAC module. i don't see a dependency there. we could fix that one without affecting this bug, or we could fix this one without affecting that bug.
*** Bug 234637 has been marked as a duplicate of this bug. ***
Target Milestone: mozilla1.7beta → mozilla1.8alpha
*** Bug 163615 has been marked as a duplicate of this bug. ***
Target Milestone: mozilla1.8alpha1 → Future
*** Bug 255006 has been marked as a duplicate of this bug. ***
Blocks: 239812
All comments for bug 239812 apply to this bug. We looked at it a bit differently but it's the same bug. Should 239812 be marked a duplicate instead of a dependency?
Bug 260797 is the same - only with firefox
*** Bug 260797 has been marked as a duplicate of this bug. ***
*** Bug 269385 has been marked as a duplicate of this bug. ***
Blocks: 208828
(sigh). So there have been 6 duplicates (bug 208828, bug 208901, bug 216329, bug 255006, Bug 260797, Bug 269385, Bug 239812) from firefox. In the old day's I'd reopen them to dupe to bug 208828, but that just creates too much bugmail, especially for darin. FF contributors, please look at that bug description, and try to make it as searchable as possible, to prevent another string of dupes into this bug.
No longer blocks: 239812
QA Contact: pacqa → benc
*** Bug 273945 has been marked as a duplicate of this bug. ***
Summary: PAC: first page load fails (b/c PAC is slower than first HTTP request) → PAC: first page/homepage load fails (b/c PAC is slower than first HTTP request)
*** Bug 272609 has been marked as a duplicate of this bug. ***
*** Bug 280216 has been marked as a duplicate of this bug. ***
(In reply to comment #53) > *** Bug 280216 has been marked as a duplicate of this bug. *** I just wanted to mention that I'm the person who submitted the latest duplicate report of this bug. I couldn't find this entry because I was searching for "proxy" and not "PAC". Someone should put the word "proxy" in the summary if more duplicate submissions are to be avoided. I'm also shocked to learn that this issue has been around for almost 3 and a half years.
Summary: PAC: first page/homepage load fails (b/c PAC is slower than first HTTP request) → PAC: first page/homepage load fails (b/c automatic proxy configuration is slower than first HTTP request)
Ben: the problem is not easy to solve. Darin: I am wondering what is the acceptable delay, and whether or not it could be tuned.
Attachment #112868 - Attachment mime type: application/octet-stream → application/x-ns-proxy-autoconfig
*** Bug 221098 has been marked as a duplicate of this bug. ***
*** Bug 251622 has been marked as a duplicate of this bug. ***
Rather than calculating the acceptable delay, perhaps the browser should simply wait to process the first HTTP request (except of course whatever requests are in the script to set up the proxy settings) until the script has finished executing. In most cases you wouldn't want the script to be running in parallel with the first user HTTP request anyway. I haven't reviewed the code, so I'm not sure how easy that is.
My plan is to delay the load of the first HTTP request until the PAC file has been downloaded. This will maybe happen in time for Gecko 1.8 (Firefox 1.1).
Target Milestone: Future → mozilla1.8beta2
We're getting into symantics here, but don't you mean until the PAC has been *executed*? If the PAC has been downloaded and then the first HTTP request is made, the environment still hasn't been set up properly for that request to go through.
> We're getting into symantics here, but don't you mean until the PAC has been > *executed*? If the PAC has been downloaded and then the first HTTP request is > made, the environment still hasn't been set up properly for that request to go > through. Yes, that's what I meant. But, in fact the PAC file is executed synchronously from the OnStopRequest event corresponding to the completion of loading the PAC file into memory, so it makes no difference how you look at it.
(In reply to comment #59) > My plan is to delay the load of the first HTTP request until the PAC file has > been downloaded. This will maybe happen in time for Gecko 1.8 (Firefox 1.1). This problem happens for me 100% of the time if the PAC URL is a file:/// URI.
For some reason, I see this happening more often on recent builds on Win2K and has always happened on OSX builds for me. Maybe we're just getting faster?
(In reply to comment #63) > For some reason, I see this happening more often on recent builds on Win2K and > has always happened on OSX builds for me. Maybe we're just getting faster? This problam was severly aggravated by the checkin for bug 282442.
> This problam was severly aggravated by the checkin for bug 282442. Indeed, but the patch in that bug is a pre-req for fixing this bug. I do intend to fix this for Firefox 1.1, but it help would definitely be appreciated.
*** Bug 295316 has been marked as a duplicate of this bug. ***
*** Bug 295433 has been marked as a duplicate of this bug. ***
*** Bug 247057 has been marked as a duplicate of this bug. ***
Flags: blocking1.8b3?
Flags: blocking-aviary1.1?
*** Bug 296163 has been marked as a duplicate of this bug. ***
Attached patch v1 patch (obsolete) — Splinter Review
ta-da !
Attachment #185913 - Flags: review?(cbiesinger)
NOTE: This patch introduces a new proxy type called "unknown" that if loaded ordinarily will be treated as "direct" by the socket transport layer. The HTTP protocol recognizes this special proxy type as a signal to call AsyncResolve on the nsIProtocolProxyService. A couple tweaks to nsPACMan were required to pull this off, but the result seems to work well. Because of the socket transport fu, I'm hopeful that this will not regress thunderbird. Hopefully, thunderbird will similarly leverage the same approach for its network connections (though I suspect that PAC is less common for mailnews).
*** Bug 297225 has been marked as a duplicate of this bug. ***
Strangly enough, I dont see this bug with Thunderbird, even though with thunderbird I have the proxy enabled as well. Must be something to do with enough delay for the proxy.pac to be loaded
Comment on attachment 185913 [details] [diff] [review] v1 patch + * NOTE: If PAC is configured, and the PAC file has not yet been loaded, + * then this method will return a nsIProxyInfo instance with a type of + * "unknown" could the RESOLVE_NON_BLOCKING flag be used instead? i.e., if that flag is set and the PAC file isn't loaded, return failure. I guess that doesn't answer what to do if that flag is not set...
or maybe both should be done: if the flag is set, return WOULD_BLOCK; otherwise, return a proxy with type unknown. that avoids special casing that proxy type when the caller can handle WOULD_BLOCK.
I built firefox including this patch and did some testing. I am currently on vacation and connected via an iffy wireless modem connection so it is kind of a worst case. The patch appears to fix the probem as described. Unfortuately it has regressed the ability of the browser to fall back to not using a proxy in the PAC case, if the proxy is not available. At work I need to use a proxy with a complicated PAC configuration to access the Internet. I generally just leave Firefox with that configuration always and count on the browser falling back to accessing everything DIRECT if the PAC server is unavailable. Additionally the errors which occur when attemtping to access the PAC server are incorrectly reported as errors contacting the webserver. I have my start page configured to be a page on www.mozilla.org. IF I am not at work the name of our proxy PAC server cannot be resolved in DNS. This results in a pup-up saying "www.mozilla.org could not be found. Please check the name and try again." Changing to using an IP address for the PAC server instead of the hostname results in the message "The operation timed out when attempting to contact www.mozilla.org." The good news is that the proposed code seems to work in both the direct case and the PAC case as long as you have the browser configured appropriately fro your connection. That is more than can be said for the current production code. Also good, is that the new issue can be easily recreated by anyone with a direct Internet connection and does not appear to be timing sensitive or require any complex configuration to reproduce. Steps to reproduce: 1. In Firefox, go to Tools -> Options -> General, set the Home page to https://www.mozilla.org.support/firefox/ 2. Click on COnnection Settings 3. Select Automatic proxy configuration URL: and enter the URL http://proxy.ray.com/proxy.pac (I selected this name on purpose because this is a domain I administer DNS for and so I know this name does not and will never exist and returns a no such host type error without the DNS server timing out. This all makes the test case simpler) 4. Exit Firfox 5. Launch Firefox. You will get an error saying the hostname www.mozilla.org does not exist.
(In reply to comment #76) > worst case. The patch appears to fix the probem as described. Unfortuately it > has regressed the ability of the browser to fall back to not using a proxy in > the PAC case, if the proxy is not available. I meant to say if the PAC server is not available. Sorry for extra BUGSPAM.
(In reply to comment #76) > Steps to reproduce: > > 1. In Firefox, go to Tools -> Options -> General, set the Home page to > https://www.mozilla.org.support/firefox/ Should be http://www.mozilla.org/support/firefox/ This was meant to be a valid URL that returns actual content. I should have proof-read this better :-( > > 2. Click on COnnection Settings > > 3. Select Automatic proxy configuration URL: and enter the URL > http://proxy.ray.com/proxy.pac > (I selected this name on purpose because this is a domain I administer DNS > for and so I know this name does not and will never exist and returns a no such > host type error without the DNS server timing out. This all makes the test case > simpler) > > 4. Exit Firfox > > 5. Launch Firefox. > > You will get an error saying the hostname www.mozilla.org does not exist. > >
biesi: The point is that I need a way to convey the fact that proxy info is still unknown to the HTTP protocol handler so that it can call AsyncResolve. If I used the NON_BLOCKING flag, then I would need a solution for protocols other than http:// and https://, which probably involves creating a nsIChannel implementation that wraps the real nsIChannel that has yet to be determined. That isn't something I want to try to solve just yet as it is a much more involved patch with greater implications (e.g., how do I implement QueryInterface on the wrapping nsIChannel implementation?). An alternative to this approach that I considered was to return a nsIProxyInfo of type "direct" with a new value OR'd into the flags attribute indicating that the proxy info was yet to be resolved. That may be a better approach, but there is some code that converts a "direct" nsIProxyInfo into a NULL proxy info, so I'd have to be careful to fixup such code.
William, thanks for the feedback. I need to make the HTTP code failover to direct when the PAC file fails to be loaded.
Attached patch v1.1 patchSplinter Review
This version should handle failure to load the PAC URL properly.
Attachment #185913 - Attachment is obsolete: true
Attachment #186124 - Flags: review?(cbiesinger)
Attachment #185913 - Flags: review?(cbiesinger)
The version(In reply to comment #81) > Created an attachment (id=186124) [edit] > v1.1 patch > > This version should handle failure to load the PAC URL properly. As far as I can tell from my testing so far, the version 1.1 patch appears to fix the original issue, as well as the problem I mentioned in comment #76.
When will this appear in the nightly builds?
As with any Mozilla patch, it will land when there are reviews and approvals. I'd expect this to take a couple days to a week depending on how busy people are. It should make it for Firefox 1.1 alpha 2.
(In reply to comment #71) > this off, but the result seems to work well. Because of the socket transport > fu, I'm hopeful that this will not regress thunderbird. Hopefully, thunderbird > will similarly leverage the same approach for its network connections (though I > suspect that PAC is less common for mailnews). I have built Thunderbird including the v1.1 patch and it appears to still be able to load images via the proxy specified in the PAC file. I have noticed no regressions so far.
I'm using Deer Park at work. My homepage is set to something local. If I immediately click an external link, it fails. Hopefully this will fix it.
(In reply to comment #86) > I'm using Deer Park at work. My homepage is set to something local. If I > immediately click an external link, it fails. Hopefully this will fix it. Yes, it should fix that problem.
Flags: blocking1.8b4+
Flags: blocking1.8b3?
Flags: blocking1.8b3-
*** Bug 298449 has been marked as a duplicate of this bug. ***
I'll get to this review tomorrow. Sorry for the delay, I didn't have much time in the last week.
I'm using TB 1.1a 20050622 and I get a problem with the autoload of proxy info. The pac file may have non-ascii chars in it? The header looks like this. I can't post any more because it has server names /* DO NOT EDIT! DO NOT EDIT! DO NOT EDIT! DO NOT EDIT! 1,1,-1,-1 1,.aaa.com * Proxy autoconfig file for Netscape Navigator * Generated by Netscape-Proxy/2.5 * Generated on Mon Dec 30 18:28:20 1996 * * DO NOT EDIT! DO NOT EDIT! DO NOT EDIT! DO NOT EDIT! *Any changes you make could be overwritten by the admin interface */ function FindProxyForURL(url, host) { // Direct connections to non-aaa hosts if (isPlainHostName(host)) { return "DIRECT"; } // Direct connections to local domain This caused the endless throbber in TB. The JavaScript console reports: Error: redeclaration of const kMailToLength Source File: chrome://communicator/content/nsContextMenu.js Line: 13 Error: redeclaration of const imgICache Source File: chrome://communicator/content/contentAreaUtils.js Line: 232 Error: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: chrome://messenger- newsblog/content/Feed.js :: anonymous :: line 174" data: no] Source File: chrome://messenger-newsblog/content/Feed.js Line: 174 (Twice) thanks
bugzilla@willmooney.com: This bug is ONLY for the first loading of the PAC file and that the first request (homepage) could be slower and fails. This bug is NOT the bug you are searching if your PAC file doesn't load at all. (that should be very clear if you read comment #0) There is another bug for non-ascii chars in the pac-file
Comment on attachment 186124 [details] [diff] [review] v1.1 patch base/src/nsPACMan.cpp + if (mStartingToLoad) + return NS_OK; shouldn't this method also truncate result? protocol/http/src/nsHttpChannel.cpp + else if (PL_strcmp(mConnectionInfo->ProxyType(), "unknown") == 0) why not libc's strcmp? + return ResolveProxy(); // Lazily resolve proxy info I wonder if we can avoid that if we already have a valid cache entry... +nsHttpChannel::ReplaceWithProxy(nsIProxyInfo *pi) +{ + nsresult rv; I'd move the decl to the line where it is first used
Attachment #186124 - Flags: review?(cbiesinger) → review+
> base/src/nsPACMan.cpp > + if (mStartingToLoad) > + return NS_OK; > > shouldn't this method also truncate result? good catch > protocol/http/src/nsHttpChannel.cpp > + else if (PL_strcmp(mConnectionInfo->ProxyType(), "unknown") == 0) > > why not libc's strcmp? because mConnectionInfo->ProxyType() can be null. > + return ResolveProxy(); // Lazily resolve proxy info > > I wonder if we can avoid that if we already have a valid cache entry... Yeah, probably... but we only know if we have a cache entry by actually trying to open a cache entry. In other words, we'd have to add yet another case to the Connect logic to resolve proxy info if we have to setup a transaction. We could do that, but I don't think it's worth the effort. The number of requests that process "unknown" nsIProxyInfo should be relatively small. > +nsHttpChannel::ReplaceWithProxy(nsIProxyInfo *pi) > +{ > + nsresult rv; > > I'd move the decl to the line where it is first used It practically is ;-) Thanks for the code review.
Comment on attachment 186124 [details] [diff] [review] v1.1 patch This patch fixes a top usability problem in Deer Park Alpha 1 for people using PAC to access their homepage. I think it would be great to get this patch in for DAP2.
Attachment #186124 - Flags: approval1.8b3?
Attachment #186124 - Flags: approval-aviary1.1a2?
Attachment #186124 - Flags: approval1.8b3?
Attachment #186124 - Flags: approval1.8b3+
Attachment #186124 - Flags: approval-aviary1.1a2?
Attachment #186124 - Flags: approval-aviary1.1a2+
fixed-on-trunk
Status: ASSIGNED → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Was the fix reverted? This 20050627 build still has the bug.
Oops, never mind, it really is fixed! Apparently installing a Deer Park nightly without uninstalling a Firefox release confuses GMail Notifier, and it still launches the old Firefox. Sweet! Thanks for the fix, this one was really bugging me.
I just tested the 20050627 linux build, and it appears to work great for me.
I have tested this on a Windows XP workstation and it works as it should. (Tested build: 20050626)
(In reply to comment #88) > *** Bug 298449 has been marked as a duplicate of this bug. *** I guess my bug is also fixed. Teste with Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b2) Gecko/20050627.
This bug is not fixed! With the checkin of patch v1.1 Firefox can't connect to any website anymore. The first time when it appears is between 06-23 and 06-24 which is exactly the timeframe of this checkin. I don't know if this happens while using the rewrite function of apache. Do we only check for the pac file once and don't follow any redirect? I'll attach a HTTP log so you can see the behavior.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Yup, redirects are not handled properly. Good catch. Basically, the problem is that we delay loading the redirect while waiting for the PAC file to load! :-( Fixing this probably requires teaching nsPACMan.cpp how to observe redirects, and then have it remember the URI of the current channel being used to load the PAC file so that it can return DIRECT for that URI when queried.
Status: REOPENED → ASSIGNED
Maybe what we need is a special load flag that always bypasses proxies?
A load flag wouldn't do it because the check happens in the nsIIOService:: newChannelFromURI call. We only have the nsIURI at that point. That is why I proposed the solution in comment #103.
Well, actually... we could tag the channel (via load flag or some property) so that it knows to ignore the nsIProxyInfo given to it. That is another option. I'm not sure if I prefer that though.
hm... maybe nsIIOService should somehow expose newProxiedChannel, and the HTTP channel could, if said load flag is present and it sets up its replacement channel, call that, passing it a null proxyinfo?
This implements the simplest solution I could come up with. When loading a PAC URL that results in a redirect, we'll end up doing the following: * LoadPACFromURI sets mPACURI to remember the PAC URL * GetProxyForURI returns DIRECT for initial URL load b/c given URL == mPACURI * redirect is processed by HTTP resulting in NewChannel being called * GetProxyForURI returns NS_ERROR_IN_PROGRESS for PAC redirect URL * nsHttpChannel calls OnChannelRedirect * nsPACMan updates mPACURI * nsHttpChannel calls nsIProtocolProxyService::AsyncResolve * nsPACMan processes the AsyncGetProxyForURI call immediately instead of queuing as it normally would do in this case * nsPACMan makes an asynchronous callback reporting DIRECT for the new PAC URI based on a call to GetProxyForURI (since mPACURI was updated, this works) I would like to support a bypass proxies load flag at some point, but that seems like a more involved change.
Attachment #187702 - Flags: review?(cbiesinger)
(In reply to comment #108) If I understand what you are doing here correctly, it seems as if this approach should even cover the degenerate case of the seocnd request resulting in a second redirect! I like it!
yes, that is true.
I liked this patch until I realized I had to do the HTTP channel change... now, I'm not so sure that this is so good, especially as it makes HTTP violate the docs I added to LOAD_BYPASS_PROXY... But maybe it would be enough to change that documentation.
(and this patch does not include the change to the other protocols) I'll review the other patch, but darin, if you prefer my patch, feel free to review :)
Comment on attachment 187702 [details] [diff] [review] v1 followup patch ah... this patch is actually simpler than I imagined. r=biesi
Attachment #187702 - Flags: review?(cbiesinger) → review+
Comment on attachment 187702 [details] [diff] [review] v1 followup patch I like the idea of NewChannelWithFlags, but let's go with this one to fix the regression. nsIIOService2 might be 1.9 fodder.
Attachment #187702 - Flags: approval1.8b3?
Attachment #187702 - Flags: approval-aviary1.1a2?
Comment on attachment 187702 [details] [diff] [review] v1 followup patch a=bsmedberg for checkin on 6/30 only
Attachment #187702 - Flags: approval1.8b3?
Attachment #187702 - Flags: approval1.8b3+
Attachment #187702 - Flags: approval-aviary1.1a2?
"v1 followup patch" is now checked in on the trunk. marking FIXED
Status: ASSIGNED → RESOLVED
Closed: 20 years ago20 years ago
Resolution: --- → FIXED
With the additional patch Firefox is working fine now. Thanks Darin. Verified with Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b2) Gecko/20050703 Firefox/1.0+
Status: RESOLVED → VERIFIED
Flags: blocking-aviary1.1?
Keywords: helpwanted
Proxy autoconfiguration still not works in Firefox 1.0.5 (Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5)
(In reply to comment #118) > Proxy autoconfiguration still not works in Firefox 1.0.5 (Mozilla/5.0 (Windows; > U; Windows NT > 5.0; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5) This fix was never checked-in into the aviary branch. It's not a security fix so the first release where it is available is DeerPark Alpha 2.
Blocks: 185644
*** Bug 185644 has been marked as a duplicate of this bug. ***
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: