3020: RBTools / post-review.py ignores https prefix
- SetupIssue
- Review Board
f**@leibe***** (Google Code) (Is this you? Claim this profile.) | |
Aug. 7, 2013 |
What version are you running? 0.5.1 RBTools What's the URL of the page containing the problem? post-review.py Here is the output, please note the "http" - even though we're using HTTPS in the config: ###### [florian@Florians-MacBook-Pro ~/mesosphere/chaos (wip)]$ cat .reviewboardrc GUESS_SUMMARY = True REVIEWBOARD_URL = "https://rb.mesosphere.com/" OPEN_BROWSER = True ###### This is the debug from the post-review, please note how there is no mention of the "HTTPS" - it assumes something is listening on http. >>> HTTP POSTing to http://rb.mesosphere.com/api/review-requests/: {'repository': 'git@github.com:foo/chaos.git'} >>> Review request created Traceback (most recent call last): File "/usr/local/bin/post-review", line 8, in <module> load_entry_point('RBTools==0.5.1', 'console_scripts', 'post-review')() File "/Library/Python/2.7/site-packages/RBTools-0.5.1-py2.7.egg/rbtools/postreview.py", line 1363, in main File "/Library/Python/2.7/site-packages/RBTools-0.5.1-py2.7.egg/rbtools/postreview.py", line 893, in tempt_fate File "/Library/Python/2.7/site-packages/RBTools-0.5.1-py2.7.egg/rbtools/postreview.py", line 465, in new_review_request
Looks like the server isn't being told it needs to give HTTPS URLs back. This is a server-side config issue, rather than client-side. It's often due to having something sitting in front of Apache that's handling the SSL. Try adding this to the reviewboard.wsgi file: os.environ['HTTPS'] = 'on'
This is not true. This is clearly a client side bug. I am not evening running plain HTTP only HTTPS!
Why would the client assume there is a HTTP server running as opposed to a HTTPS server in first place?
It is true, and it is not a client-side bug. We are very well aware of this behavior. The client did not generate the URL "http://..../api/review-requests/". The server built that link and told the client to use it for the request for review requests. Beyond the first root URL, the client has no knowledge of where anything lives and does not build paths. You can verify this by going to https://rb.mesosphere.com/api/ and see the URLs it returns. The server will build a link with https:// if it knows it's supposed to. Your server doesn't. You need to set the HTTPS environment variable to "on" to force it (as per Django's URL building logic).