Bug #579

Opera and lighttpd + fcgi over SSL is broken

Added by Anonymous 983 days ago. Updated 323 days ago.

Status:Fixed Start:
Priority:Normal Due date:
Assigned to:- % Done:

0%

Category:core
Target version:-
Pending:

No

Resolution:

fixed


Description

This bug is already discussed here :

http://forum.lighttpd.net/topic/435

Short description :

Opera reloads page (or element of page) twice with delay (~4-6s), or even hangs in middle of loading page. It only happens only :

a) No proxy in the way client <--> webserver;

b) Page is served over SSL

c) Page (or element of page) is dynamic, handled over fcgi (happens at least with php). Do not matter, how big or complicated page.

It happens in, at least 1.4.8-1.4.11 versions of lighty, seems working in 1.3.16 (will report details later).

From discussion on IRC :

<ABLomas> any ideas WHY this is a problem ONLY_ with opera, ONLY_ when isn't used proxy, ONLY_ over SSL, and ONLY_ with requests, handled over FCGI ?

<weigon> FCGI is using chunked-encoding to send out content

<weigon> that allows to use keep-alive even if you don't no the size of the whole content

<weigon> it looks like this is borken with SSL + opera

<weigon> disabled http11 is disabling chunked encoding too

<ABLomas> and this may explain why it is working with proxy - proxy waits for full request to finish.... even over ssl (only CONNECT allowed, so no content analysis is done)

<ABLomas> and returns all content "in one go"

<weigon> exactly

Seems that disabling HTTP 1.1 solves this problem.

weigon offered workaround :

$HTTPuseragent =~ "Opera" { server.protocol-http11 = "disable" }

But it do not work at last for me. From debug - lighty enters this section, but http protocol version change seems has no effect in conditionals. Aditional drawback - older opera versions (and upgraded from old version with the same config) identifies as Internet Explorer; so this will not work for them.

-- ABLomas

History

03/13/2006 05:01 PM - Anonymous

Aditional info :

Lighttpd 1.3.16 has this bug too, just a bit different... (sometimes_ lots of req, not only 2). Req/response headers (similar to 1.4.x version):


2006-03-13 18:56:33: (request.c.293) fd: 6 request-len: 492
GET /a.php HTTP/1.1
User-Agent: Opera/8.53 (Windows NT 5.1; U; en)
Host: testbox
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en
Accept-Charset: windows-1257, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Pragma: no-cache
Cache-Control: no-cache
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers

2006-03-13 18:56:33: (response.c.118) fd: 6 response-header-len: 163
HTTP/1.1 200 OK
Date: Mon, 13 Mar 2006 16:56:33 GMT
Transfer-Encoding: chunked
Content-type: text/html
X-Powered-By: PHP/4.3.10-16
Server: lighttpd/1.3.16

2006-03-13 18:57:05: (request.c.293) fd: 6 request-len: 492
GET /a.php HTTP/1.1
User-Agent: Opera/8.53 (Windows NT 5.1; U; en)
Host: testbox
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en
Accept-Charset: windows-1257, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Pragma: no-cache
Cache-Control: no-cache
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers

2006-03-13 18:57:05: (response.c.118) fd: 6 response-header-len: 163
HTTP/1.1 200 OK
Date: Mon, 13 Mar 2006 16:57:05 GMT
Transfer-Encoding: chunked
Content-type: text/html
X-Powered-By: PHP/4.3.10-16
Server: lighttpd/1.3.16

2006-03-13 18:57:37: (request.c.293) fd: 6 request-len: 539
GET /favicon.ico HTTP/1.1
User-Agent: Opera/8.53 (Windows NT 5.1; U; en)
Host: testbox
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en
Accept-Charset: windows-1257, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: https://testbox/a.php
Pragma: no-cache
Cache-Control: no-cache
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers

2006-03-13 18:57:37: (response.c.1272) file not found: /favicon.ico -> /var/www/favicon.ico
2006-03-13 18:57:37: (response.c.252) Response-Header:
HTTP/1.1 404 Not Found
Content-Length: 345
Date: Mon, 13 Mar 2006 16:57:37 GMT
Accept-Ranges: bytes
Content-Type: text/html
Server: lighttpd/1.3.16

Content of file a.php is very simple - just "static".

-- ABLomas

03/17/2006 02:53 PM - marc

I confirm this behavior, lighttpd-1.4.11 + mod_fastcgi + php 4.4.0

06/08/2006 09:48 PM - Anonymous

I also can confirm this with lighttpd + mod_fastcgi + ruby on rails + ssl + opera. All of the above eventually occur but eventually work after the keep-alive times out:

  • pages only displaying partially
  • opera requesting the page again
  • ajax scripts not processing
  • opera showing the hourglass mouse cursor and never finishing loading the page

Here's how I fixed it:


# fix the bug with internet explorer and keep-alive + SSL
server.max-keep-alive-idle = 60

# fix the bug with opera acting all strange
$HTTP["useragent"] =~ "Opera" { server.max-keep-alive-requests = 0 }

-- wkonkel

09/24/2006 01:29 PM - jan

  • Status changed from New to Fixed
  • Resolution set to fixed

this was a bug in Opera itself which we added a work-around for in 1.4.12

01/03/2008 07:15 AM - Anonymous

Replying to jan:

this was a bug in Opera itself which we added a work-around for in 1.4.12

Useful ticket, thank You! acomplia

Also available in: Atom PDF