Right, when the code is getting to that point the host
(mole.bio.cam.ac.uk) has been lost for some reason. The only way I can
see this happening is further upstream in lines 173-177, which involves
proxies. So you could try modifying those lines to:
print 'HERE10', (urltype, url)
if urltype in self.proxies:
print 'HERE11', self.proxies
proxy = self.proxies[urltype]
print 'HERE12', proxy
urltype, proxyhost = splittype(proxy)
print 'HERE13', (urltype, proxyhost)
host, selector = splithost(proxyhost)
print 'HERE14', (host, selector)
url = (host, fullurl) # Signal special case to open_*()
By the time you get to HERE14 the host has been splatted. It's possibly
this is because the proxy in HERE12 is just rubbish. Looking at the code
it looks like self.proxies ought to be empty, in which case going into
that "if" block would not happen. But that's the only bit of code I can
see that is modifying the url in the way indicated by the messages further
downstream.
Wayne
On Tue, 25 Mar 2008, Jeremy wrote:
> Hi Wayne,
> Thanks for the reply. My coworkers actually use Python 2.5, so that is
> likely not the problem. I added the five lines and the output was as
> follows:
>
> HERE3 ('', '
> http://mole.bio.cam.ac.uk/~ccpn/ccpNmrUpdate/__UpdateAgentData.db')
> HERE4
> Exception in Tkinter callback
> Traceback (most recent call last):
> File "/sw/lib/python2.5/lib-tk/Tkinter.py", line 1403, in __call__
> return self.func(*args)
> (...etc...)
>
> Hope this gives you some information.
>
> Jeremy
>
>
>
> On Tue, Mar 25, 2008 at 1:39 PM, Wayne Boucher <[log in to unmask]>
> wrote:
>
> > Hello,
> >
> > That bit of urllib.py is a bit opaque, but the only thing I can see that
> > might be going on weird is to do with proxies. Are your coworkers using
> > Python <=2.4? I did a diff between the Python 2.4 and 2.5 urllib.py code
> > and the main differences are to do with proxy handling, but not obviously
> > at the root of this problem so this could be irrelevant. The one way to
> > really find out what is going on is to edit
> >
> > /sw/lib/python2.5/urllib.py
> >
> > and to put in various checks along the way. If you have adminstrator
> > access (which I assume you do) then you could add some debugging to the
> > function open_http to get (I've added five debugging lines below):
> >
> > def open_http(self, url, data=None):
> > """Use HTTP protocol."""
> > import httplib
> > user_passwd = None
> > proxy_passwd= None
> > if isinstance(url, str):
> > host, selector = splithost(url)
> > print 'HERE1', url, host
> > if host:
> > user_passwd, host = splituser(host)
> > host = unquote(host)
> > realhost = host
> > print 'HERE2', host
> > else:
> > host, selector = url
> > print 'HERE3', url, host
> > # check whether the proxy contains authorization information
> > proxy_passwd, host = splituser(host)
> > print 'HERE4', host
> > # now we proceed with the url we want to obtain
> > urltype, rest = splittype(selector)
> > url = rest
> > user_passwd = None
> > if urltype.lower() != 'http':
> > realhost = None
> > else:
> > realhost, rest = splithost(rest)
> > if realhost:
> > user_passwd, realhost = splituser(realhost)
> > if user_passwd:
> > selector = "%s://%s%s" % (urltype, realhost, rest)
> > if proxy_bypass(realhost):
> > host = realhost
> > print 'HERE5', host
> >
> > #print "proxy via http:", host, selector
> > if not host: raise IOError, ('http error', 'no host given')
> >
> > Wayne
> >
> > On Tue, 25 Mar 2008, Jeremy wrote:
> >
> > > Thanks for the quick replies. I do not think it is a firewall issue
> > (although I am behind one), as my
> > > coworkers (running Linux or Tiger) are able to update just fine.
> > >
> > > Any further ideas?
> > >
> > > Thanks,
> > > Jeremy
> > >
> >
>
|