Mercurial > prosody-hg
comparison net/http.lua @ 5488:0880a079d830
net.http: When HTTP request fails due to a network or SSL error, call the callback to let it know
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 18 Apr 2013 00:08:58 +0100 |
| parents | e3b9dc9dd940 |
| children | 0b6a99e6c1b1 |
comparison
equal
deleted
inserted
replaced
| 5487:03ddf2375d48 | 5488:0880a079d830 |
|---|---|
| 64 end | 64 end |
| 65 | 65 |
| 66 function listener.ondisconnect(conn, err) | 66 function listener.ondisconnect(conn, err) |
| 67 local request = requests[conn]; | 67 local request = requests[conn]; |
| 68 if request and request.conn then | 68 if request and request.conn then |
| 69 request:reader(nil); | 69 request:reader(nil, err); |
| 70 end | 70 end |
| 71 requests[conn] = nil; | 71 requests[conn] = nil; |
| 72 end | 72 end |
| 73 | 73 |
| 74 local function request_reader(request, data) | 74 local function request_reader(request, data, err) |
| 75 if not request.parser then | 75 if not request.parser then |
| 76 if not data then return; end | 76 local function error_cb(reason) |
| 77 local function success_cb(r) | |
| 78 if request.callback then | 77 if request.callback then |
| 79 request.callback(r.body, r.code, r, request); | 78 request.callback(reason or "connection-closed", 0, request); |
| 80 request.callback = nil; | 79 request.callback = nil; |
| 81 end | 80 end |
| 82 destroy_request(request); | 81 destroy_request(request); |
| 83 end | 82 end |
| 84 local function error_cb(r) | 83 |
| 84 if not data then | |
| 85 error_cb(err); | |
| 86 return; | |
| 87 end | |
| 88 | |
| 89 local function success_cb(r) | |
| 85 if request.callback then | 90 if request.callback then |
| 86 request.callback(r or "connection-closed", 0, request); | 91 request.callback(r.body, r.code, r, request); |
| 87 request.callback = nil; | 92 request.callback = nil; |
| 88 end | 93 end |
| 89 destroy_request(request); | 94 destroy_request(request); |
| 90 end | 95 end |
| 91 local function options_cb() | 96 local function options_cb() |
