Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#1579 closed defect (fixed)

spiffy does not flush output port

Reported by: Jim Ursetto 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 Jim Ursetto 5 years ago.

Download all attachments as: .zip

Change History (3)

comment:1 Changed 5 years ago by sjamaan

Resolution: fixed
Status: newclosed

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 5 years ago by Mario Domenech Goulart

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

Note: See TracTickets for help on using tickets.