@@ -4,7 +4,7 @@ local function prequire(m)
44 return err
55end
66
7- local uv = prequire " lluv"
7+ local uv = prequire " lluv- "
88local Pegasus = require (uv and " lluv.pegasus" or " pegasus" )
99local Router = require " pegasus.plugins.router"
1010local json = require " dkjson"
@@ -37,20 +37,44 @@ local server = Pegasus:new{
3737 host = ' 127.0.0.1' , port = 7090 , timout = 10
3838}
3939
40+ local function recvFullBody (request , T1 )
41+ local body , counter = {}, 0
42+
43+ local result , status
44+ while true do
45+ result , status = request :receiveBody ()
46+ if result then
47+ counter = 0
48+ body [# body + 1 ] = result
49+ elseif status ~= ' timeout' then
50+ break
51+ else
52+ counter = counter + 1
53+ if counter > T1 then break end
54+ end
55+ end
56+
57+ return table.concat (body ), status
58+ end
59+
4060r :get (' /get' , function (request , response )
4161 local headers = request :headers ()
4262 local params = request :params ()
4363 local path = request :path ()
4464 local ip = request .ip
4565
66+ local body , status = recvFullBody (request , 15 )
67+
4668 local result = json .encode ({
4769 args = params ;
4870 headers = headers ;
4971 origin = ip ;
72+ content = body ;
5073 url = ' http://127.0.0.1' .. path ;
5174 }, {indent = true })
5275
5376 response :statusCode (200 )
77+ response :addHeader (' Connection' , ' close' )
5478 response :contentType (' application/json' )
5579 response :write (result )
5680end )
@@ -71,13 +95,7 @@ r:post('/post', function(request, response, params)
7195 local path = request :path ()
7296 local ip = request .ip
7397
74- local body = {}
75- while true do
76- local result , status = request :receiveBody ()
77- if result then body [# body + 1 ] = result
78- elseif status ~= ' timeout' then break end
79- end
80- body = table.concat (body )
98+ local body , status = recvFullBody (request , 15 )
8199
82100 local name , data , form = decode_form (body )
83101 if name then
@@ -95,6 +113,7 @@ r:post('/post', function(request, response, params)
95113 }, {indent = true })
96114
97115 response :statusCode (200 )
116+ response :addHeader (' Connection' , ' close' )
98117 response :contentType (' application/json' )
99118 response :write (result )
100119end )
0 commit comments