Software /
code /
prosody
Comparison
net/http/server.lua @ 11527:eaff6e548f12
net.http.server: Split out method for sending only the header
Makes it easier to reuse, e.g. for SSE or websockets or other custom
responses.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 24 Apr 2021 10:50:24 +0200 |
parent | 11409:d30c44a829c1 |
child | 12831:1cdaf21584da |
comparison
equal
deleted
inserted
replaced
11526:15a3db955ad3 | 11527:eaff6e548f12 |
---|---|
254 status_code = 200; | 254 status_code = 200; |
255 headers = { date = date_header, connection = response_conn_header }; | 255 headers = { date = date_header, connection = response_conn_header }; |
256 persistent = persistent; | 256 persistent = persistent; |
257 conn = conn; | 257 conn = conn; |
258 send = _M.send_response; | 258 send = _M.send_response; |
259 write_headers = _M.write_headers; | |
259 send_file = _M.send_file; | 260 send_file = _M.send_file; |
260 done = _M.finish_response; | 261 done = _M.finish_response; |
261 finish_cb = finish_cb; | 262 finish_cb = finish_cb; |
262 }; | 263 }; |
263 conn._http_open_response = response; | 264 conn._http_open_response = response; |
327 end | 328 end |
328 t_insert(output, "\r\n\r\n"); | 329 t_insert(output, "\r\n\r\n"); |
329 return output; | 330 return output; |
330 end | 331 end |
331 _M.prepare_header = prepare_header; | 332 _M.prepare_header = prepare_header; |
332 function _M.send_head_response(response) | 333 function _M.write_headers(response) |
333 if response.finished then return; end | 334 if response.finished then return; end |
334 local output = prepare_header(response); | 335 local output = prepare_header(response); |
335 response.conn:write(t_concat(output)); | 336 response.conn:write(t_concat(output)); |
337 end | |
338 function _M.send_head_response(response) | |
339 if response.finished then return; end | |
340 _M.write_headers(response); | |
336 response:done(); | 341 response:done(); |
337 end | 342 end |
338 function _M.send_response(response, body) | 343 function _M.send_response(response, body) |
339 if response.finished then return; end | 344 if response.finished then return; end |
340 body = body or response.body or ""; | 345 body = body or response.body or ""; |
379 if f.close then f:close(); end | 384 if f.close then f:close(); end |
380 incomplete[response.conn] = nil; | 385 incomplete[response.conn] = nil; |
381 return response:done(); | 386 return response:done(); |
382 end | 387 end |
383 end | 388 end |
384 response.conn:write(t_concat(prepare_header(response))); | 389 _M.write_headers(response); |
385 return true; | 390 return true; |
386 end | 391 end |
387 function _M.finish_response(response) | 392 function _M.finish_response(response) |
388 if response.finished then return; end | 393 if response.finished then return; end |
389 response.finished = true; | 394 response.finished = true; |