net/http.lua
changeset 11021 1f41f38a92f7
parent 10999 e18a913aed2d
parent 11020 5176d9f727f6
child 11052 160308b4b384
equal deleted inserted replaced
11018:05fefde93036 11021:1f41f38a92f7
    56 		request.conn = nil;
    56 		request.conn = nil;
    57 		conn:close()
    57 		conn:close()
    58 	end
    58 	end
    59 end
    59 end
    60 
    60 
       
    61 local function cancel_request(request, reason)
       
    62 	if request.callback then
       
    63 		request.callback(reason or "cancelled", 0, request);
       
    64 		request.callback = nil;
       
    65 	end
       
    66 	if request.conn then
       
    67 		destroy_request(request);
       
    68 	end
       
    69 end
       
    70 
    61 local function request_reader(request, data, err)
    71 local function request_reader(request, data, err)
    62 	if not request.parser then
    72 	if not request.parser then
    63 		local function error_cb(reason)
    73 		local function error_cb(reason)
    64 			if request.callback then
    74 			if request.callback then
    65 				request.callback(reason or "connection-closed", 0, request);
    75 				request.callback(reason or "connection-closed", 0, request);
   105 		log("debug", "Request '%s': Calling callback, status %s", req.id, code or "---");
   115 		log("debug", "Request '%s': Calling callback, status %s", req.id, code or "---");
   106 		return log_if_failed(req.id, xpcall(callback, handleerr, content, code, response, request));
   116 		return log_if_failed(req.id, xpcall(callback, handleerr, content, code, response, request));
   107 	end
   117 	end
   108 	req.reader = request_reader;
   118 	req.reader = request_reader;
   109 	req.state = "status";
   119 	req.state = "status";
       
   120 	req.cancel = cancel_request;
   110 
   121 
   111 	requests[req.conn] = req;
   122 	requests[req.conn] = req;
   112 
   123 
   113 	-- Validate certificate
   124 	-- Validate certificate
   114 	if not req.insecure and conn:ssl() then
   125 	if not req.insecure and conn:ssl() then
   316 	-- COMPAT
   327 	-- COMPAT
   317 	urlencode = util_http.urlencode;
   328 	urlencode = util_http.urlencode;
   318 	urldecode = util_http.urldecode;
   329 	urldecode = util_http.urldecode;
   319 	formencode = util_http.formencode;
   330 	formencode = util_http.formencode;
   320 	formdecode = util_http.formdecode;
   331 	formdecode = util_http.formdecode;
       
   332 	destroy_request = destroy_request;
   321 };
   333 };