Opened 3 months ago

Closed 3 months ago

Last modified 3 months ago

#1579 closed defect (fixed)

spiffy does not flush output port

Reported by: zbigniew Owned by:
Priority: major Milestone: someday
Component: extensions Version: 5.0.0
Keywords: spiffy Cc:
Estimated difficulty: easy

Description

Port slot 8 (closed?) changed from a bool to a fixnum in Chicken 5, which made the existing port closed test in handle-incoming-request always succeed, so output was never flushed.

This can lead to hangs when output size is less than tcp-buffer-size. This behavior was observed in chickadee when output size < 1024, including on simple responses like 302 redirects.

Fix is to use the official accessor instead, which seems to work fine. I'm not sure if this was a legacy thing, but other procedures in the spiffy code use port-closed?.

Patch is attached.

Attachments (1)

0001-Use-port-closed-instead-of-sys-slot-fixing-output-ha.patch (1.1 KB) - added by zbigniew 3 months ago.

Download all attachments as: .zip

Change History (3)

comment:1 Changed 3 months ago by sjamaan

  • Resolution set to fixed
  • Status changed from new to closed

Thanks! This is a bizarre one. I have no idea why I was using the low-level accessor instead of port-closed?. Presumably it wasn't exposed at the time (this line was added in 2010)?

Anyway, should be fixed with Spiffy 6.2

comment:2 Changed 3 months ago by mario

Probably. port-closed? was added in 4.6.0 (released in 2010-09).

Note: See TracTickets for help on using tickets.