Devs,

I'm having issues with a local toolshed I'm playing around with.

I turned on use_remote = True (since we have that working on our primary galaxy instance). Web access to the tool shed, cloning, and pulling work fine. However, I'm getting "abort: authorization failed" when trying to "hg push".

Our webserver is seeing it OK, all the authorizations look good (first one fails with 401, so hg requests creds from me and sends those, gets 200)

X - - [30/Jan/2014:18:28:28 -0600] "GET /toolshed/repos/esr/genemarks_tools?cmd=capabilities HTTP/1.1" 401 5213 "-" "mercurial/proto-1.0"
X - esr@DOMAIN [30/Jan/2014:18:28:30 -0600] "GET /toolshed/repos/esr/genemarks_tools?cmd=capabilities HTTP/1.1" 200 4893 "-" "mercurial/proto-1.0"

Everything past here is where the fun starts... those are 401s for perfectly good credentials...

X - - [30/Jan/2014:18:28:30 -0600] "GET /toolshed/repos/esr/genemarks_tools?cmd=batch HTTP/1.1" 401 730 "-" "mercurial/proto-1.0"
X - esr@DOMAIN [30/Jan/2014:18:28:30 -0600] "GET /toolshed/repos/esr/genemarks_tools?cmd=batch HTTP/1.1" 200 4797 "-" "mercurial/proto-1.0"
X - - [30/Jan/2014:18:28:30 -0600] "POST /toolshed/repos/esr/genemarks_tools?cmd=unbundle HTTP/1.1" 401 730 "-" "mercurial/proto-1.0"
X - esr@DOMAIN [30/Jan/2014:18:28:30 -0600] "POST /toolshed/repos/esr/genemarks_tools?cmd=unbundle HTTP/1.1" 401 5175 "-" "mercurial/proto-1.0"
X - esr@DOMAIN [30/Jan/2014:18:28:33 -0600] "POST /toolshed/repos/esr/genemarks_tools?cmd=unbundle HTTP/1.1" 401 5175 "-" "mercurial/proto-1.0"
X - esr@DOMAIN [30/Jan/2014:18:28:33 -0600] "POST /toolshed/repos/esr/genemarks_tools?cmd=unbundle HTTP/1.1" 401 5175 "-" "mercurial/proto-1.0"
X - esr@DOMAIN [30/Jan/2014:18:28:33 -0600] "POST /toolshed/repos/esr/genemarks_tools?cmd=unbundle HTTP/1.1" 401 5175 "-" "mercurial/proto-1.0"
X - esr@DOMAIN [30/Jan/2014:18:28:33 -0600] "POST /toolshed/repos/esr/genemarks_tools?cmd=unbundle HTTP/1.1" 401 5175 "-" "mercurial/proto-1.0"
X - esr@DOMAIN [30/Jan/2014:18:28:33 -0600] "POST /toolshed/repos/esr/genemarks_tools?cmd=unbundle HTTP/1.1" 401 5175 "-" "mercurial/proto-1.0"

And galaxy _seems_ to be seeing it OK

165.91.51.54 - - [30/Jan/2014:18:28:30 -0500] "GET /toolshed/repos/esr/genemarks_tools?cmd=capabilities HTTP/1.1" 200 130 "-" "mercurial/proto-1.0"
165.91.51.54 - - [30/Jan/2014:18:28:30 -0500] "GET /toolshed/repos/esr/genemarks_tools?cmd=batch HTTP/1.1" 200 43 "-" "mercurial/proto-1.0"

however, on my end I'm seeing:

esr:~/Projects/genemarks_tools$ hg push
pushing to https://esr@fqdn/toolshed/repos/esr/genemarks_tools
http authorization required
realm: Galaxy Toolshed
user: esr
password:
searching for changes
http authorization required
realm: hgweb in the tool shed
user: esr
password:
abort: authorization failed


The 200 I get in response to cmd=batch  isn't actually a 200. Running the same GET from the command line (GET /toolshed/repos/esr/genemarks_tools?cmd=batch) or browsing via the web I see

Galaxy was unable to successfully complete your request

URL: https://example.org/toolshed/repos/esr/genemarks_tools?cmd=batch
Module galaxy.web.framework.middleware.error:149 in __call__
>>  app_iter = self.application(environ, sr_checker)
Module paste.debug.prints:106 in __call__
>>  environ, self.app)
Module paste.wsgilib:543 in intercept_output
>>  app_iter = application(environ, replacement_start_response)
Module paste.recursive:84 in __call__
>>  return self.application(environ, start_response)
Module galaxy.webapps.tool_shed.framework.middleware.remoteuser:74 in __call__
>>  return self.app( environ, start_response )
Module paste.httpexceptions:633 in __call__
>>  return self.application(environ, start_response)
Module galaxy.web.framework.base:132 in __call__
>>  return self.handle_request( environ, start_response )
Module galaxy.web.framework.base:199 in handle_request
>>  return body( environ, start_response )
Module mercurial.hgweb.request165.91.51.54:146 in run_wsgi
>>  return application(env, respond)
Module mercurial.hgweb.hgwebdir_mod:147 in __call__
>>  return self.run_wsgi(req)
Module mercurial.hgweb.hgwebdir_mod:205 in run_wsgi
>>  return hgweb(repo).run_wsgi(req)
Module mercurial.hgweb.hgweb_mod:127 in run_wsgi
>>  return protocol.call(self.repo, req, cmd)
Module mercurial.hgweb.protocol:76 in call
>>  rsp = wireproto.dispatch(repo, p, cmd)
Module mercurial.wireproto:347 in dispatch
>>  args = proto.getargs(spec)
Module mercurial.hgweb.protocol:32 in getargs
>>  data[k] = knownargs[k][0]
KeyError: 'cmds'


Additionally, when I browse via the web/curl, I see the following in the tool_shed_webapp.log:

X - - [30/Jan/2014:19:05:33 -0500] "GET /toolshed/repos/esr/genemarks_tools?cmd=batch HTTP/1.1" 500 - "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:26.0) Gecko/20100101 Firefox/26.0"
Error - <type 'exceptions.KeyError'>: 'cmds'


Any ideas?

Cheers,
Eric Rasche

--
Eric Rasche
Programmer II
Center for Phage Technology
Texas A&M University
College Station, TX 77843
404-692-2048
esr@tamu.edu