From a30bd7ea2595ad529551df944996c0480eb12885 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20Mur=C3=A9?= <batolettre@gmail.com>
Date: Thu, 9 Mar 2023 18:23:44 +0100
Subject: [PATCH] github: try to make token generation more robust against bad
 connection

---
 bridge/github/config.go | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/bridge/github/config.go b/bridge/github/config.go
index 2f5d1f3b..c82b752f 100644
--- a/bridge/github/config.go
+++ b/bridge/github/config.go
@@ -277,7 +277,9 @@ func pollGithubForAuthorization(deviceCode string, intervalSec int64) (string, e
 	for {
 		resp, err := client.PostForm("https://github.com/login/oauth/access_token", params)
 		if err != nil {
-			return "", errors.Wrap(err, "error polling the Github API")
+			fmt.Printf("error polling the Github API: %s\n", err)
+			time.Sleep(interval * time.Millisecond)
+			continue
 		}
 		if resp.StatusCode != http.StatusOK {
 			_ = resp.Body.Close()
@@ -287,13 +289,17 @@ func pollGithubForAuthorization(deviceCode string, intervalSec int64) (string, e
 		data, err := ioutil.ReadAll(resp.Body)
 		if err != nil {
 			_ = resp.Body.Close()
-			return "", errors.Wrap(err, "error polling the Github API")
+			fmt.Printf("error polling the Github API: %s\n", err)
+			time.Sleep(interval * time.Millisecond)
+			continue
 		}
 		_ = resp.Body.Close()
 
 		values, err := url.ParseQuery(string(data))
 		if err != nil {
-			return "", errors.Wrap(err, "error decoding Github API response")
+			fmt.Printf("error decoding Github API response: %s\n", err)
+			time.Sleep(interval * time.Millisecond)
+			continue
 		}
 
 		if token := values.Get("access_token"); token != "" {
-- 
GitLab