Mercurial > prosody-hg
comparison net/http.lua @ 8534:c071cabfa066
net.http: Remove use of 'conn' (raw socket object returned by addclient)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 23 Feb 2018 16:20:45 +0000 |
| parents | a0ad62a269df |
| children | b6f3b34ecc03 |
comparison
equal
deleted
inserted
replaced
| 8533:66cdf5c7af85 | 8534:c071cabfa066 |
|---|---|
| 98 function listener.ondetach(conn) | 98 function listener.ondetach(conn) |
| 99 requests[conn] = nil; | 99 requests[conn] = nil; |
| 100 end | 100 end |
| 101 | 101 |
| 102 local function destroy_request(request) | 102 local function destroy_request(request) |
| 103 if request.conn then | 103 local conn = request.conn; |
| 104 if conn then | |
| 104 request.conn = nil; | 105 request.conn = nil; |
| 105 request.handler:close() | 106 conn:close() |
| 106 end | 107 end |
| 107 end | 108 end |
| 108 | 109 |
| 109 local function request_reader(request, data, err) | 110 local function request_reader(request, data, err) |
| 110 if not request.parser then | 111 if not request.parser then |
| 219 local sslctx = false; | 220 local sslctx = false; |
| 220 if using_https then | 221 if using_https then |
| 221 sslctx = ex and ex.sslctx or self.options and self.options.sslctx; | 222 sslctx = ex and ex.sslctx or self.options and self.options.sslctx; |
| 222 end | 223 end |
| 223 | 224 |
| 224 local handler, conn = server.addclient(host, port_number, listener, "*a", sslctx) | 225 local handler, ret = server.addclient(host, port_number, listener, "*a", sslctx) |
| 225 if not handler then | 226 if not handler then |
| 226 self.events.fire_event("request-connection-error", { http = self, request = req, url = u, err = conn }); | 227 self.events.fire_event("request-connection-error", { http = self, request = req, url = u, err = ret }); |
| 227 callback(conn, 0, req); | 228 callback(ret, 0, req); |
| 228 return nil, conn; | 229 return nil, ret; |
| 229 end | 230 end |
| 230 req.handler, req.conn = handler, conn | 231 req.conn = handler |
| 231 req.write = function (...) return req.handler:write(...); end | 232 req.write = function (...) return req.conn:write(...); end |
| 232 | 233 |
| 233 req.callback = function (content, code, response, request) | 234 req.callback = function (content, code, response, request) |
| 234 do | 235 do |
| 235 local event = { http = self, url = u, request = req, response = response, content = content, code = code, callback = callback }; | 236 local event = { http = self, url = u, request = req, response = response, content = content, code = code, callback = callback }; |
| 236 self.events.fire_event("response", event); | 237 self.events.fire_event("response", event); |
| 241 return log_if_failed(req.id, xpcall(function () return callback(content, code, request, response) end, handleerr)); | 242 return log_if_failed(req.id, xpcall(function () return callback(content, code, request, response) end, handleerr)); |
| 242 end | 243 end |
| 243 req.reader = request_reader; | 244 req.reader = request_reader; |
| 244 req.state = "status"; | 245 req.state = "status"; |
| 245 | 246 |
| 246 requests[req.handler] = req; | 247 requests[req.conn] = req; |
| 247 | 248 |
| 248 self.events.fire_event("request", { http = self, request = req, url = u }); | 249 self.events.fire_event("request", { http = self, request = req, url = u }); |
| 249 return req; | 250 return req; |
| 250 end | 251 end |
| 251 | 252 |
