Skip to content

Commit 61ec1c3

Browse files
Adding timeout when fetching plugin & more clear plugin error message
1 parent 1f71667 commit 61ec1c3

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

internal/config/plugin_installer.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"sort"
1313
"strings"
1414
"sync"
15+
"time"
1516

1617
"github.com/blang/semver"
1718
lua "github.com/yuin/gopher-lua"
@@ -126,7 +127,10 @@ func (pc PluginChannels) Fetch(out io.Writer) PluginPackages {
126127

127128
// Fetch retrieves all available PluginPackages from the given channel
128129
func (pc PluginChannel) Fetch(out io.Writer) PluginPackages {
129-
resp, err := http.Get(string(pc))
130+
client := http.Client {
131+
Timeout: 10 * time.Second,
132+
}
133+
resp, err := client.Get(string(pc))
130134
if err != nil {
131135
fmt.Fprintln(out, "Failed to query plugin channel:\n", err)
132136
return PluginPackages{}
@@ -136,7 +140,7 @@ func (pc PluginChannel) Fetch(out io.Writer) PluginPackages {
136140

137141
var repositories []PluginRepository
138142
if err := decoder.Decode(&repositories); err != nil {
139-
fmt.Fprintln(out, "Failed to decode channel data:\n", err)
143+
fmt.Fprintln(out, "Failed to decode channel data", pc, ":\n", err)
140144
return PluginPackages{}
141145
}
142146
return fetchAllSources(len(repositories), func(i int) PluginPackages {
@@ -146,7 +150,10 @@ func (pc PluginChannel) Fetch(out io.Writer) PluginPackages {
146150

147151
// Fetch retrieves all available PluginPackages from the given repository
148152
func (pr PluginRepository) Fetch(out io.Writer) PluginPackages {
149-
resp, err := http.Get(string(pr))
153+
client := http.Client {
154+
Timeout: 10 * time.Second,
155+
}
156+
resp, err := client.Get(string(pr))
150157
if err != nil {
151158
fmt.Fprintln(out, "Failed to query plugin repository:\n", err)
152159
return PluginPackages{}
@@ -156,7 +163,7 @@ func (pr PluginRepository) Fetch(out io.Writer) PluginPackages {
156163

157164
var plugins PluginPackages
158165
if err := decoder.Decode(&plugins); err != nil {
159-
fmt.Fprintln(out, "Failed to decode repository data:\n", err)
166+
fmt.Fprintln(out, "Failed to decode repository data", pr, ":\n", err)
160167
return PluginPackages{}
161168
}
162169
if len(plugins) > 0 {
@@ -391,7 +398,10 @@ func GetInstalledPluginVersion(name string) string {
391398
// DownloadAndInstall downloads and installs the given plugin and version
392399
func (pv *PluginVersion) DownloadAndInstall(out io.Writer) error {
393400
fmt.Fprintf(out, "Downloading %q (%s) from %q\n", pv.pack.Name, pv.Version, pv.Url)
394-
resp, err := http.Get(pv.Url)
401+
client := http.Client {
402+
Timeout: 10 * time.Second,
403+
}
404+
resp, err := client.Get(pv.Url)
395405
if err != nil {
396406
return err
397407
}

0 commit comments

Comments
 (0)