Skip to content

Commit c152f56

Browse files
committed
Always create temporary HTTP files in a directory with unique path.
1 parent 9376b88 commit c152f56

1 file changed

Lines changed: 6 additions & 11 deletions

File tree

‎tdnet/td/net/HttpReader.cpp‎

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -795,25 +795,20 @@ Status HttpReader::open_temp_file(CSlice desired_file_name) {
795795
TRY_RESULT(dir, realpath(tmp_dir, true));
796796
CHECK(!dir.empty());
797797

798-
auto first_try = try_open_temp_file(dir, desired_file_name);
798+
// Create a unique directory for the file
799+
TRY_RESULT(directory, mkdtemp(dir, TEMP_DIRECTORY_PREFIX));
800+
auto first_try = try_open_temp_file(directory, desired_file_name);
799801
if (first_try.is_ok()) {
800802
return Status::OK();
801803
}
802-
803-
// Creation of new file with desired name has failed. Trying to create unique directory for it
804-
TRY_RESULT(directory, mkdtemp(dir, TEMP_DIRECTORY_PREFIX));
805-
auto second_try = try_open_temp_file(directory, desired_file_name);
804+
auto second_try = try_open_temp_file(directory, "file");
806805
if (second_try.is_ok()) {
807806
return Status::OK();
808807
}
809-
auto third_try = try_open_temp_file(directory, "file");
810-
if (third_try.is_ok()) {
811-
return Status::OK();
812-
}
813808

814809
rmdir(directory).ignore();
815-
LOG(WARNING) << "Failed to create temporary file \"" << desired_file_name << "\": " << second_try.error();
816-
return second_try.move_as_error();
810+
LOG(WARNING) << "Failed to create temporary file \"" << desired_file_name << "\": " << first_try.error();
811+
return first_try.move_as_error();
817812
}
818813

819814
Status HttpReader::try_open_temp_file(Slice directory_name, CSlice desired_file_name) {

0 commit comments

Comments
 (0)