Changeset 5135

Show
Ignore:
Timestamp:
07/24/09 19:23:59 (4 years ago)
Author:
Cyrus
Message:

Merge from fonosfera

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • luci/trunk/libs/httpclient/luasrc/httpclient/receiver.lua

    r4889 r5135  
    172172    options.headers = options.headers or {} 
    173173    local hdr = options.headers 
    174      
    175     local file, code, msg = prepare_fd(target) 
    176     if not file then 
    177         return file, code, msg 
    178     end 
    179      
    180     local off = file:tell() 
    181      
    182     -- Set content range 
    183     if off > 0 then 
    184         hdr.Range = hdr.Range or ("bytes=" .. off .. "-")   
     174    local file, code, msg 
     175     
     176    if target then 
     177        file, code, msg = prepare_fd(target) 
     178        if not file then 
     179            return file, code, msg 
     180        end 
     181     
     182        local off = file:tell() 
     183         
     184        -- Set content range 
     185        if off > 0 then 
     186            hdr.Range = hdr.Range or ("bytes=" .. off .. "-")   
     187        end 
    185188    end 
    186189     
     
    188191    if not code then 
    189192        -- No success 
    190         file:close() 
     193        if file then 
     194            file:close() 
     195        end 
    191196        return code, resp, buffer 
    192197    elseif hdr.Range and code ~= 206 then 
    193198        -- We wanted a part but we got the while file 
    194199        sock:close() 
    195         file:close() 
     200        if file then 
     201            file:close() 
     202        end 
    196203        return nil, -4, code, resp 
    197204    elseif not hdr.Range and code ~= 200 then 
    198205        -- We encountered an error 
    199206        sock:close() 
    200         file:close() 
     207        if file then 
     208            file:close() 
     209        end 
    201210        return nil, -4, code, resp 
    202211    end 
     
    205214        local stat = {cbs.on_header(file, code, resp)} 
    206215        if stat[1] == false then 
    207             file:close() 
     216            if file then 
     217                file:close() 
     218            end 
    208219            sock:close() 
    209220            return unpack(stat) 
    210         end 
     221        elseif stat[2] then 
     222            file = file and stat[2] 
     223        end 
     224    end 
     225     
     226    if not file then 
     227        return nil, -5, "no target given" 
    211228    end 
    212229