fix crash when controller is not available on startup. small logging tweaks.

This commit is contained in:
dovholuknf
2021-01-21 18:18:32 -05:00
parent 3099499ed0
commit 906aebdcab
7 changed files with 26 additions and 27 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ REM See the License for the specific language governing permissions and
REM limitations under the License.
REM
SET REPO_URL=https://github.com/openziti/ziti-tunnel-sdk-c.git
SET ZITI_TUNNEL_REPO_BRANCH=v0.7.34
SET ZITI_TUNNEL_REPO_BRANCH=v0.8.3
REM override the c sdk used in the build - leave blank for the same as specified in the tunneler sdk
SET ZITI_SDK_C_BRANCH=
REM the number of TCP connections the tunneler sdk can have at any one time
-1
View File
@@ -186,7 +186,6 @@ func (dns *dnsImpl) RegisterService(svcId string, dnsNameToReg string, port uint
ip: ip,
ctx: zid,
network: currentNetwork,
dnsEnabled: zid.Active,
refCount: 1,
}
log.Infof("mapping hostname %s to ip %s as dns %s", dnsNameToReg, ip.String(), icept.AsDnsName())
+1 -1
View File
@@ -93,5 +93,5 @@ struct ziti_service_event* ziti_event_service_event(ziti_event_t *ev) {
}
ziti_service* ziti_service_array_get(ziti_service_array arr, int idx) {
return arr[idx];
return arr ? arr[idx] : NULL;
}
+13 -20
View File
@@ -106,7 +106,6 @@ type ZIdentity struct {
Version string
Services sync.Map
Fingerprint string
Active bool
StatusChanges func(int)
}
@@ -123,7 +122,7 @@ func (c *ZIdentity) GetMetrics() (int64, int64, bool) {
return 0, 0, false
}
if C.is_null(unsafe.Pointer(c.czctx)) {
log.Debugf("ziti context is C.NULL? is the identity initialized? %s", c.Fingerprint)
log.Debugf("ziti context is still null. the identity is probably not initialized yet: %s", c.Fingerprint)
return 0, 0, false
}
var up, down C.double
@@ -316,7 +315,7 @@ func serviceUnavailable(ctx *ZIdentity, svcId string, name string) {
//export eventCB
func eventCB(ztx C.ziti_context, event *C.ziti_event_t) {
appCtx := C.ziti_app_ctx(ztx)
log.Debugf("events received. type: %d for ztx(%p)", event._type, ztx)
log.Tracef("events received. type: %d for ztx(%p)", event._type, ztx)
switch event._type {
case C.ZitiContextEvent:
@@ -348,7 +347,7 @@ func eventCB(ztx C.ziti_context, event *C.ziti_event_t) {
log.Info("service removed ", C.GoString(s.name))
}
for i := 0; true ; i++ {
s := C.ziti_service_array_get(srvEvent.changed, C.int(i))
s := C.ziti_service_array_get(srvEvent.changed, C.int(i))
if unsafe.Pointer(s) == C.NULL {
break
}
@@ -356,7 +355,7 @@ func eventCB(ztx C.ziti_context, event *C.ziti_event_t) {
serviceCB(ztx, s, C.ZITI_OK, appCtx)
}
for i := 0; true ; i++ {
s := C.ziti_service_array_get(srvEvent.added, C.int(i))
s := C.ziti_service_array_get(srvEvent.added, C.int(i))
if unsafe.Pointer(s) == C.NULL {
break
}
@@ -400,13 +399,9 @@ func zitiError(code C.int) error {
return nil
}
func LoadZiti(zid *ZIdentity, cfg string, isActive bool) {
//zid := NewZid()
zid.Active = isActive
func LoadZiti(zid *ZIdentity, cfg string, refreshInterval int) {
zid.Options.config = C.CString(cfg)
zid.Options.refresh_interval = C.long(300)
zid.Options.refresh_interval = C.long(refreshInterval)
zid.Options.metrics_type = C.INSTANT
zid.Options.config_types = C.all_configs
zid.Options.pq_domain_cb = C.ziti_pq_domain_cb(C.ziti_pq_domain_go)
@@ -419,15 +414,13 @@ func LoadZiti(zid *ZIdentity, cfg string, isActive bool) {
ptr := unsafe.Pointer(zid)
zid.Options.app_ctx = ptr
go func() {
rc := C.ziti_init_opts(zid.Options, _impl.libuvCtx.l)
if rc != C.ZITI_OK {
zid.status, zid.statusErr = int(rc), zitiError(rc)
log.Errorf("FAILED to load identity from config file: %s due to: %s", cfg, zid.statusErr)
} else {
log.Debugf("successfully loaded identity from config file: %s", cfg)
}
}()
rc := C.ziti_init_opts(zid.Options, _impl.libuvCtx.l)
if rc != C.ZITI_OK {
zid.status, zid.statusErr = int(rc), zitiError(rc)
log.Errorf("FAILED to load identity from config file: %s due to: %s", cfg, zid.statusErr)
} else {
log.Debugf("successfully loaded identity from config file: %s", cfg)
}
}
//export free_async
+3 -1
View File
@@ -738,6 +738,8 @@ func newIdentity(newId dto.AddIdentity, out *json.Encoder) {
},
}
rts.ids[id.FingerPrint] = id
connectIdentity(id)
state := rts.state
@@ -764,7 +766,7 @@ func connectIdentity(id *Id) {
log.Infof("connecting identity: %s[%s]", id.Name, id.FingerPrint)
if id.CId == nil || !id.CId.Loaded {
rts.LoadIdentity(id)
rts.LoadIdentity(id, DEFAULT_REFRESH_INTERVAL)
} else {
log.Debugf("%s[%s] is already loaded", id.Name, id.FingerPrint)
+2
View File
@@ -55,6 +55,8 @@ const (
ERROR_DISCONNECTING_ID = 50
IDENTITY_NOT_FOUND = 1000
DEFAULT_REFRESH_INTERVAL = 300
cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue
InformationEvent = 0 //1
+6 -3
View File
@@ -226,7 +226,7 @@ func (t *RuntimeState) CreateTun(ipv4 string, ipv4mask int) (net.IP, *tun.Device
return ip, t.tun, nil
}
func (t *RuntimeState) LoadIdentity(id *Id) {
func (t *RuntimeState) LoadIdentity(id *Id, refreshInterval int) {
if id.CId != nil && id.CId.Loaded {
log.Warnf("id %s[%s] already connected", id.Name, id.FingerPrint)
return
@@ -270,7 +270,7 @@ func (t *RuntimeState) LoadIdentity(id *Id) {
id.CId = cziti.NewZid(sc)
cziti.LoadZiti(id.CId, id.Path(), id.Active)
cziti.LoadZiti(id.CId, id.Path(), refreshInterval)
}
func (t *RuntimeState) LoadConfig() {
@@ -278,7 +278,10 @@ func (t *RuntimeState) LoadConfig() {
if err != nil {
err = readConfig(t, config.BackupFile())
if err != nil {
log.Panicf("config file is not valid nor is backup file!")
//this means BOTH files are unusable. that's really bad... :( delete both files and then panic...
os.Remove(config.File())
os.Remove(config.BackupFile())
log.Panicf("config file is not valid nor is backup file! both files have been deleted.")
}
}