Avoid lacking fds
authorSteven Barth <steven@midlink.org>
Mon, 2 Nov 2009 15:40:53 +0000 (15:40 +0000)
committerSteven Barth <steven@midlink.org>
Mon, 2 Nov 2009 15:40:53 +0000 (15:40 +0000)
libs/lucid-http/luasrc/lucid/http/server.lua
libs/sgi-cgi/luasrc/sgi/cgi.lua

index bc8d531..fd5f7cd 100644 (file)
@@ -559,11 +559,14 @@ function Server.process(self, client, env)
                stat, code, msg = client:writeall(table.concat(header, "\r\n"))
 
                if sourceout and stat then
                stat, code, msg = client:writeall(table.concat(header, "\r\n"))
 
                if sourceout and stat then
+                       local closefd
                        if util.instanceof(sourceout, IOResource) then
                                if not headers["Transfer-Encoding"] then
                                        stat, code, msg = sourceout.fd:copyz(client, sourceout.len)
                        if util.instanceof(sourceout, IOResource) then
                                if not headers["Transfer-Encoding"] then
                                        stat, code, msg = sourceout.fd:copyz(client, sourceout.len)
+                                       closefd = sourceout.fd
                                        sourceout = nil
                                else
                                        sourceout = nil
                                else
+                                       closefd = sourceout.fd
                                        sourceout = sourceout.fd:blocksource(nil, sourceout.len)
                                end
                        end
                                        sourceout = sourceout.fd:blocksource(nil, sourceout.len)
                                end
                        end
@@ -571,6 +574,10 @@ function Server.process(self, client, env)
                        if sourceout then
                                stat, msg = ltn12.pump.all(sourceout, sinkout)
                        end
                        if sourceout then
                                stat, msg = ltn12.pump.all(sourceout, sinkout)
                        end
+
+                       if closefd then
+                               closefd:close()
+                       end
                end
 
 
                end
 
 
index b86722d..3fec696 100644 (file)
@@ -87,6 +87,7 @@ function run()
                                active = false
                        elseif id == 6 then
                                data1:copyz(nixio.stdout, data2)
                                active = false
                        elseif id == 6 then
                                data1:copyz(nixio.stdout, data2)
+                               data1:close()
                        end
                end
        end
                        end
                end
        end