comparison mod_http_upload/mod_http_upload.lua @ 2800:8d9aed6d1f87

mod_http_upload: Only try to create a randomly named directory once.
author Kim Alvefur <zash@zash.se>
date Tue, 17 Oct 2017 22:39:37 +0200
parents e1edf643fbb1
children faec53f4b31e
comparison
equal deleted inserted replaced
2799:db0f654b9b3f 2800:8d9aed6d1f87
133 elseif not check_quota(username, host, filesize) then 133 elseif not check_quota(username, host, filesize) then
134 module:log("debug", "Upload of %dB by %s would exceed quota", filesize, origin.full_jid); 134 module:log("debug", "Upload of %dB by %s would exceed quota", filesize, origin.full_jid);
135 return nil, st.error_reply(stanza, "wait", "resource-constraint", "Quota reached"); 135 return nil, st.error_reply(stanza, "wait", "resource-constraint", "Quota reached");
136 end 136 end
137 137
138 local random_dir; 138 local random_dir = uuid();
139 repeat random_dir = uuid(); 139 local created, err = lfs.mkdir(join_path(storage_path, random_dir));
140 until lfs.mkdir(join_path(storage_path, random_dir)) 140
141 or not lfs.attributes(join_path(storage_path, random_dir, filename)) 141 if not created then
142 module:log("error", "Could not create directory for slot: %s", err);
143 return nil, st.error_reply(stanza, "wait", "internal-server-failure");
144 end
142 145
143 local ok = datamanager.list_append(username, host, module.name, { 146 local ok = datamanager.list_append(username, host, module.name, {
144 filename = filename, dir = random_dir, size = filesize, time = os.time() }); 147 filename = filename, dir = random_dir, size = filesize, time = os.time() });
145 148
146 if not ok then 149 if not ok then