hgweb Odd-string length error
Jérôme Godbout
jerome at bodycad.com
Wed Jul 9 19:59:44 UTC 2014
I even try to uninstall python/mercurial and reinstall the latest version
(python 2.7.8 and mercurial 3.0.2), with the same result: Odd-String length
with the pull request with Tortoise or Mercurial hg executable. I'm missing
a piece of the puzzle?!?
On Wed, Jul 9, 2014 at 3:31 PM, Jérôme Godbout <jerome at bodycad.com> wrote:
> I got the same result if I remove the virtualhost and just a ScriptAlias
> into Apache (just loose the images loading):
>
> ScriptAlias /hg/ "C:/Program Files (x86)/Apache Software
> Foundation/Apache2.2/cgi-bin/hgweb.cgi/"
>
> <Directory "C:/Program Files (x86)/Apache Software
> Foundation/Apache2.2/cgi-bin/">
> Order allow,deny
> Allow from all
> AllowOverride All
> Options ExecCGI FollowSymLinks
> AddHandler cgi-script .cgi
> </Directory>
>
> Even If I try to use the root directory directly and set into config empty
> baseurl=
> ScriptAlias / "C:/Program Files (x86)/Apache Software
> Foundation/Apache2.2/cgi-bin/hgweb.cgi/"
>
> same result, Odd-length string. Is there any incompatibility between some
> python version and mercurial packages?!? everything point into that
> direction, cause the ScriptAlias to root directory is pretty stright foward
> into apache. Anybody have a working set of Python-mercurial installation
> with Apache 2.2 under windows (I wish I could just do it under Linux but I
> can't for this).
>
>
> On Wed, Jul 9, 2014 at 3:11 PM, Jérôme Godbout <jerome at bodycad.com> wrote:
>
>> Apache does not give me any error into it's log (easy to find I set up
>> the error and the vhost error log, both are empty of error, some debug
>> info).
>> The Error log show nothing (even apache into debug error level). The
>> access info show:
>> 10.1.x.x - - [09/Jul/2014:14:38:49 -0400] "GET
>> /hg/MyRepos/?cmd=capabilities HTTP/1.1" 200 130
>> 10.1.x.x - - [09/Jul/2014:14:38:49 -0400] "GET /hg/MyRepos/?cmd=batch
>> HTTP/1.1" 200 1355
>>
>> Look like a problem with the proxy, anybody have any tips to set this
>> into virtual host for Apache (see first email for all config info)? Why can
>> I browse it and trace graph into the web page of the repos then?
>> If I set the hgweb into a virtual host for apache, does I have to set
>> something special into the hgweb.config file like proxy_web or something
>> like that? I already set the baseurl and staticurl. Anybody have a good
>> page for all the fields for this file?
>>
>> (btw the allow_pull variable should be = * or = True, seen both on the
>> wiki, my guess would be * for all user).
>>
>> If I try to fet the cmd manually by url
>> http://myserver/hg/MyRepos/?cmd=batch
>> I get the following if this can help:
>> ____________________________________
>>
>> --> --> -->
>>
>> *<type 'exceptions.KeyError'>* Python 2.7: C:\Python27_32\python.exe
>> Wed Jul 09 14:40:23 2014
>>
>> A problem occurred in a Python script. Here is the sequence of function
>> calls leading up to the error, in the order they occurred.
>> C:\Program Files (x86)\Apache Software
>> Foundation\Apache2.2\cgi-bin\hgweb.cgi in () 18
>> from mercurial import demandimport; demandimport.enable()
>> 19 from mercurial.hgweb import hgweb
>> 20 from flup.server.cgi import WSGIServer
>> 21 application = hgweb(config)
>> => 22 WSGIServer(application).run()
>> *WSGIServer* = <class 'flup.server.cgi.WSGIServer'>, *application* =
>> <mercurial.hgweb.hgwebdir_mod.hgwebdir object>, ).*run* = <bound method
>> hgwebdir.run of <mercurial.hgweb.hgwebdir_mod.hgwebdir object>>
>> C:\Python27_32\lib\site-packages\flup-1.0.3.dev_20110405-py2.7.egg\flup\server\cgi.py
>> in *run*(self=<flup.server.cgi.WSGIServer object>) 60
>> return write
>> 61
>> => 62 result = self.application(environ, start_response)
>> 63 try:
>> 64 for data in result:
>> result *undefined*, *self* = <flup.server.cgi.WSGIServer object>, self.
>> *application* = <mercurial.hgweb.hgwebdir_mod.hgwebdir object>, *environ* =
>> {'COMSPEC': r'C:\Windows\system32\cmd.exe', 'DOCUMENT_ROOT': 'C:/Program
>> Files (x86)/Apache Software Foundation/Apache2.2/htdocs',
>> 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT':
>> 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
>> 'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch', 'HTTP_ACCEPT_LANGUAGE':
>> 'en-US,en;q=0.8,fr-CA;q=0.6,fr;q=0.4', 'HTTP_CONNECTION': 'keep-alive',
>> 'HTTP_COOKIE': 'JSESSIONID.70149e26=1spmkqfvxv6w71gkrm88jx4db8;
>> ...ns-timestamper=elapsed; hudson_auto_refresh=false', 'HTTP_HOST':
>> 'build_server', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; WOW64)
>> AppleWebKit/...L, like Gecko) Chrome/35.0.1916.153 Safari/537.36', ...},
>> *start_response* = <function start_response>
>> C:\Python27_32\lib\site-packages\mercurial\hgweb\hgwebdir_mod.py in
>> *__call__*(self=<mercurial.hgweb.hgwebdir_mod.hgwebdir object>,
>> env={'COMSPEC': r'C:\Windows\system32\cmd.exe', 'DOCUMENT_ROOT':
>> 'C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs',
>> 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT':
>> 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
>> 'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch', 'HTTP_ACCEPT_LANGUAGE':
>> 'en-US,en;q=0.8,fr-CA;q=0.6,fr;q=0.4', 'HTTP_CONNECTION': 'keep-alive',
>> 'HTTP_COOKIE': 'JSESSIONID.70149e26=1spmkqfvxv6w71gkrm88jx4db8;
>> ...ns-timestamper=elapsed; hudson_auto_refresh=false', 'HTTP_HOST':
>> 'build_server', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; WOW64)
>> AppleWebKit/...L, like Gecko) Chrome/35.0.1916.153 Safari/537.36', ...},
>> respond=<function start_response>) 151
>> def __call__(self, env, respond):
>> 152 req = wsgirequest(env, respond)
>> => 153 return self.run_wsgi(req)
>> 154
>> 155 def read_allowed(self, ui, req):
>> *self* = <mercurial.hgweb.hgwebdir_mod.hgwebdir object>, self.*run_wsgi* =
>> <bound method hgwebdir.run_wsgi of <mercurial.hgweb.hgwebdir_mod.hgwebdir
>> object>>, *req* = <mercurial.hgweb.request.wsgirequest object>
>> C:\Python27_32\lib\site-packages\mercurial\hgweb\hgwebdir_mod.py in
>> *run_wsgi*(self=<mercurial.hgweb.hgwebdir_mod.hgwebdir object>,
>> req=<mercurial.hgweb.request.wsgirequest object>) 216
>> try:
>> 217 repo = hg.repository(self.ui, real)
>> => 218 return hgweb(repo).run_wsgi(req)
>> 219 except IOError, inst:
>> 220 msg = inst.strerror
>> *global* *hgweb* = <class 'mercurial.hgweb.hgweb_mod.hgweb'>, *repo* =
>> <mercurial.localrepo.proxycls object>, ).run_wsgi *undefined*, *req* =
>> <mercurial.hgweb.request.wsgirequest object>
>> C:\Python27_32\lib\site-packages\mercurial\hgweb\hgweb_mod.py in
>> *run_wsgi*(self=<mercurial.hgweb.hgweb_mod.hgweb object>,
>> req=<mercurial.hgweb.request.wsgirequest object>) 170
>> if cmd in perms:
>> 171 self.check_perm(req, perms[cmd])
>> => 172 return protocol.call(self.repo, req, cmd)
>> 173 except ErrorResponse, inst:
>> 174
>> # A client that sends unbundle without 100-continue will
>> *global* *protocol* = <module 'mercurial.hgweb.protocol' from
>> 'C:\Pyth...\lib\site-packages\mercurial\hgweb\protocol.pyc'>, protocol.
>> *call* = <function call>, *self* = <mercurial.hgweb.hgweb_mod.hgweb
>> object>, self.*repo* = <mercurial.localrepo.proxycls object>, *req* =
>> <mercurial.hgweb.request.wsgirequest object>, *cmd* = 'batch'
>> C:\Python27_32\lib\site-packages\mercurial\hgweb\protocol.py in *call*(repo=<mercurial.localrepo.proxycls
>> object>, req=<mercurial.hgweb.request.wsgirequest object>, cmd='batch')
>> 74 def call(repo, req, cmd):
>> 75 p = webproto(req, repo.ui)
>> => 76 rsp = wireproto.dispatch(repo, p, cmd)
>> 77 if isinstance(rsp, str):
>> 78 req.respond(HTTP_OK, HGTYPE, body=rsp)
>> rsp *undefined*, *global* *wireproto* = <module 'mercurial.wireproto'
>> from 'C:\Python27_32\lib\site-packages\mercurial\wireproto.pyc'>, wireproto.
>> *dispatch* = <function dispatch>, *repo* = <mercurial.localrepo.proxycls
>> object>, *p* = <mercurial.hgweb.protocol.webproto object>, *cmd* =
>> 'batch' C:\Python27_32\lib\site-packages\mercurial\wireproto.py in
>> *dispatch*(repo=<mercurial.localrepo.proxycls object>,
>> proto=<mercurial.hgweb.protocol.webproto object>, command='batch')
>> 480 repo = repo.filtered("served")
>> 481 func, spec = commands[command]
>> => 482 args = proto.getargs(spec)
>> 483 return func(repo, proto, *args)
>> 484
>> args *undefined*, *proto* = <mercurial.hgweb.protocol.webproto object>,
>> proto.*getargs* = <bound method webproto.getargs of
>> <mercurial.hgweb.protocol.webproto object>>, *spec* = 'cmds *'
>> C:\Python27_32\lib\site-packages\mercurial\hgweb\protocol.py in *getargs*(self=<mercurial.hgweb.protocol.webproto
>> object>, args='cmds *') 30 data['*'] = star
>> 31 else:
>> => 32 data[k] = knownargs[k][0]
>> 33 return [data[k] for k in keys]
>> 34 def _args(self):
>> *data* = {}, *k* = 'cmds', *knownargs* = {'cmd': ['batch']}
>>
>> *<type 'exceptions.KeyError'>*: 'cmds'
>> args = ('cmds',)
>> message = 'cmds'
>>
>>
>> On Wed, Jul 9, 2014 at 2:32 PM, Matt Mackall <mpm at selenic.com> wrote:
>>
>>> On Mon, 2014-07-07 at 11:53 -0400, Jérôme Godbout wrote:
>>> > Hi,
>>> > I'm trying to setup a hgweb server with Apache 2.2 (32 bits) under
>>> Windows
>>> > 7 (64bits). I got it to serve and can browse the file at
>>> > my http://build_server/hg/MainRepos properly. I can see the file, the
>>> > branch, the graph, the images are loading, etc. But I cannot
>>> > pull from the same address, I always end up with the following error:
>>> > "Odd-string length" into wireproto.py
>>> >
>>> > Here's an example of error message with TortoiseHg (it's most verbatim
>>> then
>>> > the command line):
>>> > #########################################
>>> > #!python
>>> > ** Mercurial version (3.0.1). TortoiseHg version (3.0.1)
>>> > ** Command: --nofork workbench
>>> > ** CWD: F:\MainRepos
>>> > ** Encoding: cp1252
>>> > ** Extensions loaded:
>>> > ** Python version: 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC
>>> v.1500
>>> > 64 bit (AMD64)]
>>> > ** Windows version: sys.getwindowsversion(major=6, minor=1,
>>> build=7601,
>>> > platform=2, service_pack='Service Pack 1')
>>> > ** Processor architecture: x64
>>> > ** Qt-4.8.5 PyQt-4.10.3 QScintilla-2.7.2
>>> > Traceback (most recent call last):
>>> > File "tortoisehg\hgqt\thread.pyo", line 304, in run
>>> > File "tortoisehg\util\hglib.pyo", line 710, in dispatch
>>> > File "mercurial\dispatch.pyo", line 819, in _dispatch
>>> > File "mercurial\dispatch.pyo", line 599, in runcommand
>>> > File "mercurial\dispatch.pyo", line 910, in _runcommand
>>> > File "mercurial\dispatch.pyo", line 881, in checkargs
>>> > File "mercurial\dispatch.pyo", line 816, in <lambda>
>>> > File "mercurial\util.pyo", line 518, in check
>>> > File "mercurial\commands.pyo", line 4607, in pull
>>> > File "mercurial\localrepo.pyo", line 1708, in pull
>>> > File "mercurial\exchange.pyo", line 539, in pull
>>> > File "mercurial\exchange.pyo", line 564, in _pulldiscovery
>>> > File "mercurial\discovery.pyo", line 46, in findcommonincoming
>>> > File "mercurial\setdiscovery.pyo", line 140, in findcommonheads
>>> > File "mercurial\wireproto.pyo", line 123, in submit
>>> > File "mercurial\wireproto.pyo", line 129, in _submitreq
>>> > File "mercurial\wireproto.pyo", line 226, in heads
>>> > File "mercurial\wireproto.pyo", line 171, in decodelist
>>> > TypeError: Odd-length string
>>> > ########################################
>>>
>>> Almost certainly a server error. Check your server's _error_ logs (as
>>> you're on Windows, they'll be in a hard-to-find place that's not your
>>> access logs).
>>>
>>> --
>>> Mathematics is the supreme nostalgia of our time.
>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20140709/a907e4c8/attachment-0002.html>
More information about the Mercurial
mailing list