Skip to content

Commit

Permalink
Handle missing model in CLI parameters for llama-run (ggerganov#11399)
Browse files Browse the repository at this point in the history
The HTTP client in llama-run only prints an error in case the download of
a resource failed. If the model name in the CLI parameter list is missing,
this causes the application to crash.
In order to prevent this, a check for the required model parameter has been
added and errors for resource downloads get propagated to the caller.

Signed-off-by: Michael Engel <mengel@redhat.com>
  • Loading branch information
engelmi authored Jan 28, 2025
1 parent a4417dd commit 2b8525d
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions examples/run/run.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,10 @@ class Opt {
}
}

if (model_.empty()){
return 1;
}

return 0;
}

Expand Down Expand Up @@ -350,7 +354,11 @@ class HttpClient {
data.file_size = set_resume_point(output_file_partial);
set_progress_options(progress, data);
set_headers(headers);
perform(url);
CURLcode res = perform(url);
if (res != CURLE_OK){
printe("Fetching resource '%s' failed: %s\n", url.c_str(), curl_easy_strerror(res));
return 1;
}
if (!output_file.empty()) {
std::filesystem::rename(output_file_partial, output_file);
}
Expand Down Expand Up @@ -415,16 +423,12 @@ class HttpClient {
}
}

void perform(const std::string & url) {
CURLcode res;
CURLcode perform(const std::string & url) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
printe("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
return curl_easy_perform(curl);
}

static std::string human_readable_time(double seconds) {
Expand Down

0 comments on commit 2b8525d

Please sign in to comment.