1737: Exception is thrown when adding a private GitHub repository
- SetupIssue
- Review Board
| kevin.******@gmai***** (Google Code) (Is this you? Claim this profile.) | |
| Sept. 26, 2010 |
What version are you running?
1.5RC1
What's the URL of the page containing the problem?
http://reviews.kevmaster.com/admin/db/scmtools/repository/add/
What steps will reproduce the problem?
1. Add new repository: Hosting service "GitHub (private)"
2. Fill out all data
3. Hit "Save"
What is the expected output? What do you see instead?
Expected: repository gets added.
Actual: 500 page.
What operating system are you using? What browser?
OS X 10.6.4
Chrome 5.0, Firefox 3.6.8 (error happens in both)
Please provide any additional information below.
Error log dump is below:
ERROR:root:Exception thrown for user admin at http://reviews.kevmaster.com/admin/db/scmtools/repository/add/
'tool'
Traceback (most recent call last):
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/core/handlers/base.py", line 100, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/contrib/admin/sites.py", line 512, in root
return self.model_page(request, *url.split('/', 2))
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/views/decorators/cache.py", line 69, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/contrib/admin/sites.py", line 531, in model_page
return admin_obj(request, rest_of_url)
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/contrib/admin/options.py", line 1190, in __call__
return self.add_view(request)
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/utils/decorators.py", line 21, in _wrapper
return decorator(bound_func)(*args, **kwargs)
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/utils/decorators.py", line 76, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/utils/decorators.py", line 17, in bound_func
return func(self, *args2, **kwargs2)
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/db/transaction.py", line 299, in _commit_on_success
res = func(*args, **kw)
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/contrib/admin/options.py", line 777, in add_view
if form.is_valid():
File "/home3/kevmaste/.local/lib/python2.4/site-packages/ReviewBoard-1.5rc1-py2.4.egg/reviewboard/scmtools/forms.py", line 577, in is_valid
return (super(RepositoryForm, self).is_valid() and
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/forms/forms.py", line 121, in is_valid
return self.is_bound and not bool(self.errors)
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/forms/forms.py", line 112, in _get_errors
self.full_clean()
File "/home3/kevmaste/.local/lib/python2.4/site-packages/ReviewBoard-1.5rc1-py2.4.egg/reviewboard/scmtools/forms.py", line 499, in full_clean
return super(RepositoryForm, self).full_clean()
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/forms/forms.py", line 268, in full_clean
self._clean_form()
File "/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/forms/forms.py", line 296, in _clean_form
self.cleaned_data = self.clean()
File "/home3/kevmaste/.local/lib/python2.4/site-packages/ReviewBoard-1.5rc1-py2.4.egg/reviewboard/scmtools/forms.py", line 515, in clean
self._clean_hosting_info()
File "/home3/kevmaste/.local/lib/python2.4/site-packages/ReviewBoard-1.5rc1-py2.4.egg/reviewboard/scmtools/forms.py", line 447, in _clean_hosting_info
tool_name = self.cleaned_data['tool'].name
KeyError: 'tool'
The admin account just received this email containing the post-data for the failing request. Hope this helps.
<WSGIRequest
GET:<QueryDict: {}>,
POST:<QueryDict: {u'username': [u'hosting@partyearth.com'], u'name': [u'Partyearth'], u'bug_tracker_type': [u'none'], u'encoding': [u''], u'tool': [u'2'], u'api_token': [u'xxxxxxx'], u'bug_tracker_project_name': [u'Partyearth'], u'hosting_project_name': [u'Partyearth'], u'bug_tracker_base_url': [u''], u'visible': [u'on'], u'hosting_type': [u'github-private'], u'bug_tracker_owner': [u''], u'_save': [u'Save'], u'raw_file_url': [u''], u'bug_tracker': [u''], u'path': [u''], u'csrfmiddlewaretoken': [u'46fd13a07a342baa7c4ba8397e2e65be'], u'password': [u'pe4life!'], u'mirror_path': [u''], u'hosting_owner': [u'partyearth']}>,
COOKIES:{'csrftoken': '46fd13a07a342baa7c4ba8397e2e65be',
'rbsessionid': 'ebd5c17c7efcd94f605785518577a94d'},
META:{'CONTENT_LENGTH': '2448',
'CONTENT_TYPE': 'multipart/form-data; boundary=---------------------------168072824752491622650073',
'CSRF_COOKIE': '46fd13a07a342baa7c4ba8397e2e65be',
'DOCUMENT_ROOT': '/home3/kevmaste/public_html/reviews',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-us,en;q=0.5',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_COOKIE': 'rbsessionid=ebd5c17c7efcd94f605785518577a94d; csrftoken=46fd13a07a342baa7c4ba8397e2e65be',
'HTTP_HOST': 'reviews.kevmaster.com',
'HTTP_KEEP_ALIVE': '115',
'HTTP_REFERER': 'http://reviews.kevmaster.com/admin/db/scmtools/repository/add/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8',
'PATH': '/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin',
'PATH_INFO': u'/admin/db/scmtools/repository/add/',
'PATH_TRANSLATED': 'redirect:/reviewboard.fcgi/admin/db/scmtools/repository/add//db/scmtools/repository/add/',
'QUERY_STRING': '',
'REDIRECT_STATUS': '200',
'REDIRECT_UNIQUE_ID': 'TE3hZ0rc12UAADR2IQ8AAACN',
'REDIRECT_URL': '/admin/db/scmtools/repository/add/',
'REDIRECT_file_gzip': '/ramdisk/cpud/status',
'REMOTE_ADDR': '99.107.206.17',
'REMOTE_PORT': '51075',
'REQUEST_METHOD': 'POST',
'REQUEST_URI': '/admin/db/scmtools/repository/add/',
'SCRIPT_FILENAME': '/home3/kevmaste/public_html/reviews/reviewboard.fcgi',
'SCRIPT_NAME': u'',
'SERVER_ADDR': '74.220.202.29',
'SERVER_ADMIN': 'webmaster@reviews.kevmaster.com',
'SERVER_NAME': 'reviews.kevmaster.com',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SIGNATURE': '<address>Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635 Server at reviews.kevmaster.com Port 80</address>\n',
'SERVER_SOFTWARE': 'Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635',
'UNIQUE_ID': 'TE3hZ0rc12UAADR2IQ8AAACN',
'file_gzip': '/ramdisk/cpud/status',
'wsgi.errors': <flup.server.fcgi_base.OutputStream object at 0x19354d0>,
'wsgi.input': <flup.server.fcgi_base.InputStream object at 0x1935d50>,
- Hide quoted text -
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>
I've been unable to reproduce this. It seems, from the debug output, that the 'tool' being set is '2', which is not a valid value. I know this has been a while. Were you guys able to add any repositories to this server at all? Has it just been failing with the Private GitHub?
-
+ NeedInfo
Adding a normal git repository doesn't work either, with the same error:
<WSGIRequest
GET:<QueryDict: {}>,
POST:<QueryDict: {u'username': [u'kevgo'], u'name': [u'Lyrictionary'], u'bug_tracker_type': [u'none'], u'encoding': [u''], u'tool': [u'2'], u'api_token': [u'xxxxxxxxxxxxxxxx'], u'bug_tracker_project_name': [u'PartyEarth'], u'hosting_project_name': [u'Lyrictionary'], u'bug_tracker_base_url': [u''], u'visible': [u'on'], u'hosting_type': [u'github'], u'bug_tracker_owner': [u''], u'_addanother': [u'Save and add another'], u'raw_file_url': [u''], u'bug_tracker': [u''], u'path': [u''], u'csrfmiddlewaretoken': [u'fbc4803e38bc182072cd95484837100e'], u'password': [u'xxxxxxxxxxxxx'], u'mirror_path': [u''], u'hosting_owner': [u'kevgo']}>,
COOKIES:{'__utma': '46634404.1102347595.1283184843.1283184843.1283199598.2',
'__utmc': '46634404',
'__utmz': '46634404.1283184843.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)',
'csrftoken': 'fbc4803e38bc182072cd95484837100e',
'rbsessionid': 'eddd638c46ee7008b2ebc349492f0500'},
META:{'CONTENT_LENGTH': '2174',
'CONTENT_TYPE': 'multipart/form-data; boundary=----WebKitFormBoundaryodEqAdUkEtDneM8M',
'CSRF_COOKIE': 'fbc4803e38bc182072cd95484837100e',
'DOCUMENT_ROOT': '/home3/kevmaste/public_html/reviews',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_CACHE_CONTROL': 'max-age=0',
'HTTP_CONNECTION': 'close',
'HTTP_COOKIE': '__utmz=46634404.1283184843.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=46634404.1102347595.1283184843.1283184843.1283199598.2; __utmc=46634404; rbsessionid=eddd638c46ee7008b2ebc349492f0500; csrftoken=fbc4803e38bc182072cd95484837100e',
'HTTP_HOST': 'reviews.kevmaster.com',
'HTTP_ORIGIN': 'http://reviews.kevmaster.com',
'HTTP_REFERER': 'http://reviews.kevmaster.com/admin/db/scmtools/repository/add/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Safari/533.4',
'PATH': '/sbin:/usr/sbin:/bin:/usr/bin',
'PATH_INFO': u'/admin/db/scmtools/repository/add/',
'PATH_TRANSLATED': 'redirect:/reviewboard.fcgi/admin/db/scmtools/repository/add//db/scmtools/repository/add/',
'QUERY_STRING': '',
'REDIRECT_STATUS': '200',
'REDIRECT_UNIQUE_ID': 'THwiBErc12UAADwnuNAAAAJO',
'REDIRECT_URL': '/admin/db/scmtools/repository/add/',
'REDIRECT_file_gzip': '/ramdisk/cpud/status',
'REMOTE_ADDR': '99.107.204.248',
'REMOTE_PORT': '55228',
'REQUEST_METHOD': 'POST',
'REQUEST_URI': '/admin/db/scmtools/repository/add/',
'SCRIPT_FILENAME': '/home3/kevmaste/public_html/reviews/reviewboard.fcgi',
'SCRIPT_NAME': u'',
'SERVER_ADDR': '74.220.202.29',
'SERVER_ADMIN': 'webmaster@reviews.kevmaster.com',
'SERVER_NAME': 'reviews.kevmaster.com',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SIGNATURE': '<address>Apache/2.2.16 (CentOS) mod_ssl/2.2.16 0.9.8l DAV/2 mod_fcgid/2.3.5 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635 Server at reviews.kevmaster.com Port 80</address>\n',
'SERVER_SOFTWARE': 'Apache/2.2.16 (CentOS) mod_ssl/2.2.16 0.9.8l DAV/2 mod_fcgid/2.3.5 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635',
'UNIQUE_ID': 'THwiBErc12UAADwnuNAAAAJO',
- Hide quoted text -
'file_gzip': '/ramdisk/cpud/status',
'wsgi.errors': <flup.server.fcgi_base.OutputStream object at 0x95fa10>,
'wsgi.input': <flup.server.fcgi_base.InputStream object at 0x95f990>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>
Adding Subversion doesn't work either. Tool is set to '1' in this case.
<WSGIRequest
GET:<QueryDict: {}>,
POST:<QueryDict: {u'username': [u'kevgo'], u'name': [u'Lyrictionary'], u'bug_tracker_type': [u'none'], u'encoding': [u''], u'tool': [u'1'], u'api_token': [u'1d5c3c7ac96c350dc0fd64fe9e76e729'], u'bug_tracker_project_name': [u'PartyEarth'], u'hosting_project_name': [u'Lyrictionary'], u'bug_tracker_base_url': [u''], u'visible': [u'on'], u'hosting_type': [u'sourceforge'], u'bug_tracker_owner': [u''], u'_save': [u'Save'], u'raw_file_url': [u''], u'bug_tracker': [u''], u'path': [u''], u'csrfmiddlewaretoken': [u'fbc4803e38bc182072cd95484837100e'], u'password': [u'test'], u'mirror_path': [u''], u'hosting_owner': [u'kevgo']}>,
COOKIES:{'__utma': '46634404.1102347595.1283184843.1283184843.1283199598.2',
'__utmc': '46634404',
'__utmz': '46634404.1283184843.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)',
'csrftoken': 'fbc4803e38bc182072cd95484837100e',
'rbsessionid': 'eddd638c46ee7008b2ebc349492f0500'},
META:{'CONTENT_LENGTH': '2150',
'CONTENT_TYPE': 'multipart/form-data; boundary=----WebKitFormBoundaryPifgA0jKTPbLbEtm',
'CSRF_COOKIE': 'fbc4803e38bc182072cd95484837100e',
'DOCUMENT_ROOT': '/home3/kevmaste/public_html/reviews',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_CACHE_CONTROL': 'max-age=0',
'HTTP_CONNECTION': 'close',
'HTTP_COOKIE': '__utmz=46634404.1283184843.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=46634404.1102347595.1283184843.1283184843.1283199598.2; __utmc=46634404; rbsessionid=eddd638c46ee7008b2ebc349492f0500; csrftoken=fbc4803e38bc182072cd95484837100e',
'HTTP_HOST': 'reviews.kevmaster.com',
'HTTP_ORIGIN': 'http://reviews.kevmaster.com',
'HTTP_REFERER': 'http://reviews.kevmaster.com/admin/db/scmtools/repository/add/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Safari/533.4',
'PATH': '/sbin:/usr/sbin:/bin:/usr/bin',
'PATH_INFO': u'/admin/db/scmtools/repository/add/',
'PATH_TRANSLATED': 'redirect:/reviewboard.fcgi/admin/db/scmtools/repository/add//db/scmtools/repository/add/',
'QUERY_STRING': '',
'REDIRECT_STATUS': '200',
'REDIRECT_UNIQUE_ID': 'THwq9krc12UAAGMAC58AAAaK',
'REDIRECT_URL': '/admin/db/scmtools/repository/add/',
'REDIRECT_file_gzip': '/ramdisk/cpud/status',
'REMOTE_ADDR': '99.107.204.248',
'REMOTE_PORT': '55403',
'REQUEST_METHOD': 'POST',
'REQUEST_URI': '/admin/db/scmtools/repository/add/',
'SCRIPT_FILENAME': '/home3/kevmaste/public_html/reviews/reviewboard.fcgi',
'SCRIPT_NAME': u'',
'SERVER_ADDR': '74.220.202.29',
'SERVER_ADMIN': 'webmaster@reviews.kevmaster.com',
'SERVER_NAME': 'reviews.kevmaster.com',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SIGNATURE': '<address>Apache/2.2.16 (CentOS) mod_ssl/2.2.16 0.9.8l DAV/2 mod_fcgid/2.3.5 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635 Server at reviews.kevmaster.com Port 80</address>\n',
'SERVER_SOFTWARE': 'Apache/2.2.16 (CentOS) mod_ssl/2.2.16 0.9.8l DAV/2 mod_fcgid/2.3.5 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635',
'UNIQUE_ID': 'THwq9krc12UAAGMAC58AAAaK',
Okay, it's a problem with your installation then. Do you remember what steps you did to install it? And was the database from this fresh install, or ported over from a developer install? I would recommend wiping the database and doing a brand new one, assuming you don't have data in it.
Thanks for looking into this, and sorry for this false alert. I have successfully run Reviewboard without any problems on a dedicated server. This particular install is on a shared host, where I don't have access to the apache and python configuration. Hence the installation steps below (taken from a site that explains how to install a django-based app on shared hosting) work around the limitations there, and use fastcgi. Are there any official instructions on how to install Reviewboard in a shared hosting environment? The database and everything else are a clean install btw.
### Prepare installing local binaries.
export PATH=$HOME/opt/bin:$HOME/bin:$HOME/.local/lib/python/site-packages:$PATH
### Install customizable Python.
cd ~/src
wget http://peak.telecommunity.com/dist/virtual-python.py
python ~/src/virtual-python.py
### install python setuptools
cd ~/src
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py --install-dir=~/.local/lib/python/site-packages
### install Reviewboard
easy_install --prefix=$HOME/.local -f http://downloads.reviewboard.org/releases/ReviewBoard/1.5/ -U ReviewBoard
easy_install --prefix=$HOME/.local mysql-python
rb-site install reviewboard
### add this .htaccess file
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ reviewboard.fcgi/$1 [QSA,L]
### change reviewboard.fcgi
#!/home3/kevmaste/bin/python
import os, sys
sys.path.insert(0, "/home3/kevmaste/reviewboard/conf")
sys.path.insert(0, "/home3/kevmaste/reviewboard/htdocs")
sys.path.insert(0, "/home3/kevmaste/.local/lib/python/site-packages")
sys.path.insert(0, "/home3/kevmaste/.local/lib/python2.4/site-packages")
sys.path.insert(0, "/home3/kevmaste/.local/bin")
sys.path.insert(0, "/home3/kevmaste/bin")
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/ReviewBoard-1.5rc1-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/python_memcached-1.45-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/pytz-2010h-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/flup-1.0.3.dev_20100525-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/Pygments-1.3.1-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/Djblets-0.6.3-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/django_evolution-0.5-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/PIL-1.1.7-py2.4-linux-x86_64.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/paramiko-1.7.6-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/pycrypto-2.1.0-py2.4-linux-x86_64.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/python_dateutil-1.5-py2.4.egg')
sys.path.insert(0, '/home3/kevmaste/.local/lib/python2.4/site-packages/recaptcha_client-1.0.5-py2.4.egg')
os.environ["DJANGO_SETTINGS_MODULE"] = "reviewboard.settings"
os.environ["PYTHON_EGG_CACHE"] = "/home3/kevmaste/.local/lib/python/site-packages"
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
I think every shared host is different in that regards; if there's something janky in their apache/python installs, options are pretty limited. I'm not sure there's anything we can document except specific workarounds for specific hosts, which seems like it's not worth the trouble.
-
- NeedInfo + SetupIssue