@@ -832,7 +832,14 @@ func (a *WsClient) Locations() (x.RpnServers, error) {
832832
833833// Update implements x.RpnAcc.
834834func (a * WsClient ) Update () (newstate * x.Gobyte , err error ) {
835- b , refreshed , err := makeWsWgFrom (a .http , a .config ())
835+ if a == nil {
836+ return nil , errWsNoClient
837+ }
838+ c := a .config ()
839+ if c == nil {
840+ return nil , errWsNoConfig
841+ }
842+ b , refreshed , err := makeWsWgFrom (a .http , c )
836843 if err != nil || ! refreshed {
837844 log .E ("ws: update: refreshed? %t; err: %v" , refreshed , err )
838845 return nil , core .OneErr (err , errWsRetryUpdate )
@@ -959,10 +966,10 @@ func getSession(h *http.Client, tok string, test bool) (*WsSession, error) {
959966 authHeader (req , tok )
960967
961968 res , err := h .Do (req )
962- if err != nil {
963- return nil , fmt .Errorf ("ws: getsess: req err: %v" , err )
969+ if err != nil || res == nil {
970+ return nil , fmt .Errorf ("ws: getsess: res err (nil? %t) : %v" , res == nil , err )
964971 }
965- defer res . Body . Close ()
972+ defer core . Close (res . Body )
966973 if res .StatusCode != http .StatusOK {
967974 return nil , wsErr (res , "getsess" )
968975 }
@@ -1121,8 +1128,8 @@ func getServerList(h *http.Client, sess *WsSession, ent *WsEntitlement) (*WsServ
11211128 }
11221129
11231130 locres , err := h .Do (locreq )
1124- if err != nil {
1125- return nil , fmt .Errorf ("ws: wgconfs: res err: %v" , err )
1131+ if err != nil || locres == nil {
1132+ return nil , fmt .Errorf ("ws: wgconfs: res err (nil? %t) : %v" , locres == nil , err )
11261133 }
11271134
11281135 defer core .Close (locres .Body )
@@ -1209,14 +1216,14 @@ initagain:
12091216
12101217 initres , err := h .Do (initreq )
12111218
1212- if err != nil {
1213- return nil , nil , fmt .Errorf ("ws: wgconfs: res err: %v" , err )
1219+ if err != nil || initres == nil {
1220+ return nil , nil , fmt .Errorf ("ws: wgconfs: res err (nil? %t) : %v" , initres == nil , err )
12141221 }
12151222
12161223 if initres .StatusCode != http .StatusOK {
12171224 wserr , err := wsErr2 (initres , "wsinit" )
12181225 core .Close (initres .Body )
1219- if wserr .Code == ekeylimit {
1226+ if wserr != nil && wserr .Code == ekeylimit {
12201227 if force != "1" {
12211228 log .I ("ws: wgconfs: redo init with force for %s; err: %v" , trunc8 (pubkeybase64 ), err )
12221229 force = "1"
@@ -1283,13 +1290,13 @@ initagain:
12831290 authHeader (creq , sess .SessionAuthHash )
12841291
12851292 cres , err := h .Do (creq )
1286- if err != nil {
1287- return nil , nil , fmt .Errorf ("ws: wgconfs: connect send err: %v" , err )
1293+ if err != nil || cres == nil {
1294+ return nil , nil , fmt .Errorf ("ws: wgconfs: connect res err (nil? %t) : %v" , cres == nil , err )
12881295 }
12891296 if cres .StatusCode != http .StatusOK {
1290- core .Close (cres .Body )
12911297 wserr , err := wsErr2 (cres , "wsconnect" )
1292- if wserr .Code == ekeyinvalid { // the key was deleted!
1298+ core .Close (cres .Body )
1299+ if wserr != nil && wserr .Code == ekeyinvalid { // the key was deleted!
12931300 if keyed == 0 {
12941301 keyed = 1
12951302 goto keyagain // try again with a non-default key
@@ -1300,7 +1307,7 @@ initagain:
13001307
13011308 var wgConnect WsWgConnectResponse
13021309 _ , err = wsRes (cres , & wgConnect , "wgconfs" )
1303- core .Close (cres .Body )
1310+ defer core .Close (cres .Body )
13041311 if err != nil {
13051312 return nil , nil , fmt .Errorf ("ws: wgconfs: connect res err: %v" , err )
13061313 }
0 commit comments