analysis
[ikiwiki.git] / doc / bugs / Running_on_an_alternative_port_fails.mdwn
index 8b5fefa91330973b1b3686d97817e5fec28ecaa0..b97f64383f000c0a3e19af07b76930334efe0396 100644 (file)
@@ -6,6 +6,8 @@ For example if you run on 'http://my.gear.xxx:8080/' then after clicking login (
 
 NB: both the 'url' and the 'cgiurl' include the port and removing the port element provides the expected functionality.
 
+---
+
 > I tried to reproduce this by making my laptop's web server use port
 > 8080. Set up ikiwiki to use that in cgiurl and url, and had
 > no problem with either openid or password auth login.
@@ -14,3 +16,56 @@ NB: both the 'url' and the 'cgiurl' include the port and removing the port eleme
 > what version you were using. It could also be a problem with your web
 > server, conceviably, if didn't correctly communicate the port to the cgi
 > program. --[[Joey]]
+
+---
+
+>> I did think of that so threw a 'printenv' script to check the port was arriving 
+right.
+
+>>>     SERVER_PORT=8181  
+>>>     HTTP_HOST=zippy0.ie0.cobbled.net  
+
+>>>> In apache, `HTTP_HOST` includes the port. This is not part of the CGI
+>>>> spec it seems, but perl's `CGI` module seems to rely on it,
+>>>> in `virtual_port`:
+
+<pre>
+    my $vh = $self->http('x_forwarded_host') || $self->http('host');
+    my $protocol = $self->protocol;
+    if ($vh) {
+        return ($vh =~ /:(\d+)$/)[0] || ($protocol eq 'https' ? 443 : 80);
+</pre>
+
+>>>> The `CGI` module only looks at `SERVER_PORT` when there's no
+>>>> `HTTP_HOST`. So this is either a bug in perl's CGI or thttpd.
+>>>> --[[Joey]]
+
+>>>     HTTP_ACCEPT_LANGUAGE=en-ie, en  
+>>>     PATH=/usr/local/bin:/usr/ucb:/bin:/usr/bin  
+>>>     SCRIPT_NAME=/cgi-bin/printenv.sh  
+>>>     HTTP_USER_AGENT=Mozilla/5.0 (X11; U; Linux i686; en-ie) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+ Ubuntu/10.10 () Epiphany/2.30.2  
+>>>     PWD=/home/http1/www/cgi-bin  
+>>>     REQUEST_METHOD=GET  
+>>>     SERVER_SOFTWARE=thttpd
+>>>     SERVER_NAME=zippy0  
+>>>     SERVER_PROTOCOL=HTTP/1.1  
+>>>     HTTP_ACCEPT_ENCODING=gzip  
+>>>     GATEWAY_INTERFACE=CGI/1.1  
+>>>     CGI_PATTERN=cgi-bin/*  
+>>>     HTTP_COOKIE=ikiwiki_session_c%5E2%3Fsupport%3Dtrue=bdf13df0460966a607ba497967ea5ff4  
+>>>     REMOTE_ADDR=10.0.0.1  
+>>>     HTTP_ACCEPT=application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5  
+
+>>Seems to be.  Using version from packaging system;
+
+>>>     ikiwiki-3.20110905
+
+>> which I'd guess is from Apr last  year.  Will look for updates and post back if still
+wrong.
+
+>> Cheers
+
+>> -- fergus
+
+>> PS: all the links generated by CGI pages omit the port; this works if i login first and then
+reset the server on the 'odd' port -- hovering over the links absolute links with the port missing.