openziti / ziti-sdk-c Goto Github PK
View Code? Open in Web Editor NEWA C-based sdk for delivering secure applications over a Ziti Network
Home Page: https://docs.openziti.io/docs/reference/developer/sdk/ziti-sdk-c
License: Apache License 2.0
A C-based sdk for delivering secure applications over a Ziti Network
Home Page: https://docs.openziti.io/docs/reference/developer/sdk/ziti-sdk-c
License: Apache License 2.0
Scenario:
Expected:
Service unavailable event should trigger for services failing posture checks
Currently, the stack variable cfg
is not initialized by load_config()
if it fails to find a valid config file. The subsequent call to free_nf_config(cfg)
will cause an attempt to free a bogus memory location because the cfg
variable contains garbage.
This error currently manifests in a MattermoZt arena as a spinning logo during the init/connect sequence, because the SDK crash terminates the Electron renderer process.
Is it online/available? In an error state? Is the status current or is it from some timeAgo?
[ 19948.816] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tcp_src.c:101 connect failed: -49(address not available)
[ 19948.816] VERBOSE cmake-build-debug/_deps/uv-mbed-src/src/http.c:212 src connected status = -49
[ 19948.816] DEBUG cmake-build-debug/_deps/uv-mbed-src/src/http.c:231 failed to connect: -49(address not available)
[ 19948.816] VERBOSE cmake-build-debug/_deps/ziti-sdk-c-src/library/ziti_ctrl.c:684 ctrl_paging_req() requesting /services?limit=25&offset=0
[ 19948.816] VERBOSE cmake-build-debug/_deps/ziti-sdk-c-src/library/ziti.c:849 update_services() ztx[0] scheduling service refresh 10 seconds from now
[ 19948.816] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/ziti.c:855 update_services() ztx[0] failed to get service updates err[CONTROLLER_UNAVAILABLE/address not available] from ctrl[https://3.210.34.143:443]
[ 19950.477] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[5] connecting to 3.109.234.45:443
[ 19950.478] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tcp_src.c:101 connect failed: -49(address not available)
[ 19950.478] WARN cmake-build-debug/_deps/uv-mbed-src/src/uv_mbed.c:125 failed to connect
[ 19950.478] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:856 on_channel_connect_internal() ch[5] failed to connect [-49/address not available]
[ 19950.478] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:743 reconnect_channel() ch[5] reconnecting in 4686 ms (attempt = 3)
[ 19950.490] DEBUG lib/ziti-tunnel-cbs/ziti_tunnel_ctrl.c:170 process_cmd() processing command[GetMetrics] with data[{"id":"/Users/scarey/.ziti/mop/mattermost.shawn.carey.pc_Enrollment.json"}]
[ 19953.333] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[3] connecting to 129.159.89.151:443
[ 19953.334] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tcp_src.c:101 connect failed: -49(address not available)
[ 19953.334] WARN cmake-build-debug/_deps/uv-mbed-src/src/uv_mbed.c:125 failed to connect
[ 19953.334] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:856 on_channel_connect_internal() ch[3] failed to connect [-49/address not available]
[ 19953.334] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:743 reconnect_channel() ch[3] reconnecting in 14799 ms (attempt = 3)
[ 19953.949] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[0] connecting to 129.159.71.35:443
[ 19953.950] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tcp_src.c:101 connect failed: -49(address not available)
[ 19953.950] WARN cmake-build-debug/_deps/uv-mbed-src/src/uv_mbed.c:125 failed to connect
[ 19953.950] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:856 on_channel_connect_internal() ch[0] failed to connect [-49/address not available]
[ 19953.950] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:743 reconnect_channel() ch[0] reconnecting in 56681 ms (attempt = 5)
[ 19955.165] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[5] connecting to 3.109.234.45:443
[ 19955.165] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tcp_src.c:101 connect failed: -49(address not available)
[ 19955.165] WARN cmake-build-debug/_deps/uv-mbed-src/src/uv_mbed.c:125 failed to connect
[ 19955.165] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:856 on_channel_connect_internal() ch[5] failed to connect [-49/address not available]
[ 19955.165] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:743 reconnect_channel() ch[5] reconnecting in 20400 ms (attempt = 4)
[ 19955.491] DEBUG lib/ziti-tunnel-cbs/ziti_tunnel_ctrl.c:170 process_cmd() processing command[GetMetrics] with data[{"id":"/Users/scarey/.ziti/mop/mattermost.shawn.carey.pc_Enrollment.json"}]
[ 19956.670] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[6] connecting to 129.151.44.40:443
[ 19956.672] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tcp_src.c:101 connect failed: -49(address not available)
[ 19956.672] WARN cmake-build-debug/_deps/uv-mbed-src/src/uv_mbed.c:125 failed to connect
[ 19956.672] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:856 on_channel_connect_internal() ch[6] failed to connect [-49/address not available]
[ 19956.672] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:743 reconnect_channel() ch[6] reconnecting in 127513 ms (attempt = 5)
[ 19958.225] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[2] connecting to 129.151.45.194:443
[ 19958.227] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tcp_src.c:101 connect failed: -49(address not available)
[ 19958.227] WARN cmake-build-debug/_deps/uv-mbed-src/src/uv_mbed.c:125 failed to connect
[ 19958.227] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:856 on_channel_connect_internal() ch[2] failed to connect [-49/address not available]
[ 19958.227] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:743 reconnect_channel() ch[2] reconnecting in 3217 ms (attempt = 4)
[ 19958.315] VERBOSE lib/ziti-tunnel/tunnel_tcp.c:342 recv_tcp() received SYN on active connection: client=tcp:192.168.0.0:60299, service=mattermost.tools.netfoundry.io
[ 19958.817] VERBOSE cmake-build-debug/_deps/uv-mbed-src/src/http.c:352 client not connected, starting connect sequence
[ 19958.818] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tcp_src.c:101 connect failed: -49(address not available)
[ 19958.818] VERBOSE cmake-build-debug/_deps/uv-mbed-src/src/http.c:212 src connected status = -49
[ 19958.818] DEBUG cmake-build-debug/_deps/uv-mbed-src/src/http.c:231 failed to connect: -49(address not available)
[ 19958.818] VERBOSE cmake-build-debug/_deps/ziti-sdk-c-src/library/ziti_ctrl.c:684 ctrl_paging_req() requesting /services?limit=25&offset=0
[ 19958.818] VERBOSE cmake-build-debug/_deps/ziti-sdk-c-src/library/ziti.c:849 update_services() ztx[0] scheduling service refresh 10 seconds from now
[ 19958.818] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/ziti.c:855 update_services() ztx[0] failed to get service updates err[CONTROLLER_UNAVAILABLE/address not available] from ctrl[https://3.210.34.143:443]
[ 19960.100] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[1] connecting to 129.146.214.27:443
[ 19960.101] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tcp_src.c:101 connect failed: -49(address not available)
[ 19960.101] WARN cmake-build-debug/_deps/uv-mbed-src/src/uv_mbed.c:125 failed to connect
[ 19960.101] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:856 on_channel_connect_internal() ch[1] failed to connect [-49/address not available]
[ 19960.101] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:743 reconnect_channel() ch[1] reconnecting in 7074 ms (attempt = 3)
[ 19960.491] DEBUG lib/ziti-tunnel-cbs/ziti_tunnel_ctrl.c:170 process_cmd() processing command[GetMetrics] with data[{"id":"/Users/scarey/.ziti/mop/mattermost.shawn.carey.pc_Enrollment.json"}]
[ 19960.836] DEBUG lib/ziti-tunnel/tunnel_tcp.c:109 new_tcp_pcb() snd_wnd: 65535, snd_snd_max: 65535, mss: 32768
[ 19960.836] INFO lib/ziti-tunnel/tunnel_tcp.c:386 recv_tcp() intercepted address[tcp:192.168.0.10:443] client[tcp:192.168.0.0:60322] service[mattermost.tools.netfoundry.io]
[ 19960.836] VERBOSE lib/ziti-tunnel-cbs/ziti_tunnel_cbs.c:294 ziti_sdk_c_dial() ziti_dial(name=mattermost.tools.netfoundry.io)
[ 19960.836] DEBUG lib/ziti-tunnel-cbs/ziti_tunnel_cbs.c:360 ziti_sdk_c_dial() service[mattermost.tools.netfoundry.io] app_data_json[174]='{"dst_protocol":"tcp","dst_hostname":"mattermost.tools.netfoundry.io","dst_ip":"192.168.0.10","dst_port":"443","src_protocol":"tcp","src_ip":"192.168.0.0","src_port":"60322"}'
[ 19960.836] VERBOSE cmake-build-debug/_deps/ziti-sdk-c-src/library/connect.c:94 conn_set_state() conn[0.298] transitioning Initial => Connecting
[ 19960.836] VERBOSE cmake-build-debug/_deps/ziti-sdk-c-src/library/posture.c:183 ziti_send_posture_data() ztx[0] starting to send posture data
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/posture.c:187 ziti_send_posture_data() ztx[0] posture checks either never sent or api session changed, must_send = true
[ 19960.836] VERBOSE cmake-build-debug/_deps/ziti-sdk-c-src/library/posture.c:205 ziti_send_posture_data() ztx[0] checking posture queries on 1 service(s)
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/posture.c:464 ziti_pr_send_bulk() ztx[0] no change in posture data, not sending
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/connect.c:485 ziti_connect_async() conn[0.298] starting Dial connection for service[mattermost.tools.netfoundry.io] with session[ckvr44fx70jto0fomrdcb1sfg]
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:275 ziti_channel_connect() ztx[0] existing ch[0](Disconnected) found for ingress[tls://129.159.71.35:443]
[ 19960.836] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:746 reconnect_channel() ch[0] reconnecting NOW
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:275 ziti_channel_connect() ztx[0] existing ch[1](Disconnected) found for ingress[tls://129.146.214.27:443]
[ 19960.836] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:746 reconnect_channel() ch[1] reconnecting NOW
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:275 ziti_channel_connect() ztx[0] existing ch[2](Disconnected) found for ingress[tls://129.151.45.194:443]
[ 19960.836] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:746 reconnect_channel() ch[2] reconnecting NOW
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:275 ziti_channel_connect() ztx[0] existing ch[3](Disconnected) found for ingress[tls://129.159.89.151:443]
[ 19960.836] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:746 reconnect_channel() ch[3] reconnecting NOW
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:275 ziti_channel_connect() ztx[0] existing ch[4](Disconnected) found for ingress[tls://65.2.62.54:443]
[ 19960.836] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:746 reconnect_channel() ch[4] reconnecting NOW
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:275 ziti_channel_connect() ztx[0] existing ch[5](Disconnected) found for ingress[tls://3.109.234.45:443]
[ 19960.836] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:746 reconnect_channel() ch[5] reconnecting NOW
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:275 ziti_channel_connect() ztx[0] existing ch[6](Disconnected) found for ingress[tls://129.151.44.40:443]
[ 19960.836] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:746 reconnect_channel() ch[6] reconnecting NOW
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[0] connecting to 129.159.71.35:443
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[1] connecting to 129.146.214.27:443
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[2] connecting to 129.151.45.194:443
[ 19960.836] DEBUG cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_cb() ch[3] connecting to 129.159.89.151:443
Exception: EXC_BAD_ACCESS (code=1, address=0x38)
Time since startup is "ok" for log messages but it's really hard to read as a human. It'd be much better to have the log output UTC time instead.
Local time is easier for users but for debugging purposes it's probably easier to use UTC?
Add a NF_version() API that exposes the SDK's version info to consuming apps. This will be a nice trouble-shooting / support tool.
to reproduce, just call NF_init() multiple times in a row:
NF_init();
NF_init();
NF_init();
The NodeJS-SDK, while handling some startup sequences in an Electron app, sometimes does multiple NF_init() calls to the C-SDK, and experiences hangs.
I had a context which did not fully initialize due to failed to login: INVALID_AUTH[-12](The authentication request failed)
. When that context is passed to ziti_shutdown ztx->session
is NULL and free_ziti_session(ztx->session);
will cause a crash
When renaming a service the CSDK will get two service callbacks - one with ZITI_SERVICE_UNAVAILABLE
and one with ZITI_OK
. This will allow an sdk-based app to remove an intercept/add it back properly.
If the config for that service changes - the CSDK will get a service callback with ZITI_OK
only.
steps to reproduce
ZITI_OK
callback onlyI have enabled MFA on an my chat-enabled identity. Right now when I wake my laptop from sleep I am required to MFA yet to the chat app it appears as though I have no connection. It would be useful for a tunneling app (or a ziti-integrated app) to realize MFA was necessary at that time and prompt the user
Could be separated into two issues:
fix/improve constency of ziti_connection lifecycle:
When a client sends an HTTP request via um_http_req
and the request includes a Connection:close
header, the request fails with the following:
ERROR _deps/uv-mbed-src/src/http.c:74 connection error before active request could complete -4095 (end of file)
request to controller should be made on the event loop instead of background thread
enable periodic polling of available services
Thread 16 received signal SIGSEGV, Segmentation fault.
[Switching to Thread 21244.0x764c]
0x000000006ec927b4 in ziti_connect (ctx=0x2d616650, session=0x2d606080, req=0x2d6065d0) at _deps/ziti-sdk-c-src/library/connect.c:253
253 for (er = session->edge_routers; *er != NULL; er++) {
SDK keeps trying to connect to defunct edge routers
Here is the things that happen on disable:
ziti_connection
s are disconnected, appropriate callback receives ZITI_DISABLED
error codeZitiServiceEvent
is sent with all current services removedZitiEdgeRouteEvent
sZitiContextEvent
if context is disabled it can be re-enabled/restarted by calling ziti_set_enabled(ztx, true)
. Re-enabling puts it back into
running state
Right now it seems as though NF_close would reclaim the memory for a connection but the connection is not getting free'd.
sample_http_link.c, both as client and server need a quick write up on how to use ziti cli to use the samples. let's make a quick README.md
the c sdk appears to be parsing the response from /authenticate?method=cert
in order to hydrate the ziti_identity however this endpoint returns an api-session and not an actual identity. This leaves the tags null.
Please provide a mechanism to fetch the tags for a given identity.
NF_free is going to be removed soon so NF_shutdown should reclaim memory for the nf_context.
some ideas:
timeout frees up connect request, and when connection accept message comes in SDK gets SEGV when trying to finish connection processing
My first attempt at building a library package for ziti sdk shared library fails around libsodium.
Since the distribution has already libsodium, I have installed libsodium-devel
and essentially running cmake
with -DHAVE_LIBSODIUM=ON
however that fails with:
Unknown arguments specified
Whether I pass it as a cmd line option to make or change the option to default to ON
in CMakeLists.txt, the same thing happens.
[2021-06-24T17:45:56.681Z] ERROR SDKe: _deps/uv-mbed-src/src/tls_link.c:113 TLS read -4077(connection reset by peer)
0.22.5(8f2de59)[Thu-06/03/2021-10:07:07--04]
has this issue as does 0.23.x
Steps to reproduce:
ziti_shutdown
Assertion failed!
Program: c:\git\github\openziti\ziti-tunnel-win\service\ziti-tunnel.exe
File: ../deps/ziti-sdk-c/deps/uv-mbed/deps/libuv/src/win/async.c, Line 76
Expression: !(handle->flags & UV_HANDLE_CLOSING)
Would like a method that returns the version of controller for a given identity
i had an http response come back with
issuer=ziti.dev\u0026secret=NHV434VTKE
inside it. this cased a segfault. the log clearly states what happened
[2021-03-02T21:17:18.737Z] ERROR SDKe: _deps/ziti-sdk-c-src/library/model_support.c:620 _parse_string() unhandled escape seq '\u'
[2021-03-02T21:17:18.738Z] TRACE cleaning identity: theId
Thread 15 received signal SIGSEGV, Segmentation fault.```
The identity name is no longer part of the JWT and want to show it in the UI. Also need to support updating when name changes (either allow it to be queried again or notify via a callback when it's available or changes)
Had a user indicate the ziti desktop edge for windows was crashing. They are on Ziti C SDK version 0.17.8-local @9dec2f9(HEAD) starting at (.706)
File: _deps/libuv-src/src/win/tcp.c, Line 1063
Expression: handle->reqs_pending > 0
logs when it happens:
[ 4.008] INFO :sdk.c:55 libuv_runner(): starting event loop
[ 4.013] INFO ziti-tunnel-sdk-c:lib/ziti_tunnel.c:44 ziti_tunneler_init(): Ziti Tunneler SDK (v0.7.10)
[ 7.938] INFO ziti-sdk:ps/ziti-sdk-c-src/library/ziti.c:194 ziti_init_opts(): Ziti C SDK version 0.17.8-local @9dec2f9(HEAD) starting at (.980)
_deps/uv-mbed-src/src/tls_link.c:125 ERR TLS handshake error X509 - Certificate verification failed, e.g. CRL, CA or signature check failed
_deps/uv-mbed-src/src/http.c:74 ERR connection error before active request could complete -4079 (software caused connection abort)
[ 8.422] ERROR ziti-sdk:ps/ziti-sdk-c-src/library/ziti.c:672 version_cb(): failed to get controller version from 107.22.221.166:443 CONTROLLER_UNAVAILABLE(software caused connection abort)
_deps/uv-mbed-src/src/http.c:74 ERR connection error before active request could complete -4095 (end of file)
[ 8.662] ERROR ziti-sdk:ps/ziti-sdk-c-src/library/ziti.c:637 session_cb(): failed to login: CONTROLLER_UNAVAILABLE[-15](end of file)
[ 8.665] INFO ziti-sdk:ps/ziti-sdk-c-src/library/ziti.c:194 ziti_init_opts(): Ziti C SDK version 0.17.8-local @9dec2f9(HEAD) starting at (.706)
Allow passing info from identity json file directly rather than (or in addition to) requiring a file
I've been seeing this often when trying to connect a service after my dev box wakes up from sleep:
Client
[ 0.027] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/ziti.c:226 ziti_init_async() ztx[0] Ziti C SDK version 0.20.12 @a48c51a(HEAD) starting at (2021-02-19T15:52:04.236)
[ 104030.564] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:627 hello_reply_cb() ch[0] connected. EdgeRouter version: v0.0.0|local|2020-01-01 01:01:01|amd64|darwin
[ 104033.418] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:627 hello_reply_cb() ch[1] connected. EdgeRouter version: v0.0.0|local|2020-01-01 01:01:01|amd64|linux
[ 230158.461] INFO lib/tunnel_tcp.c:93 new_tcp_pcb() snd_wnd: 65535, snd_snd_max: 65535, mss: 32768
[ 230158.461] INFO lib/tunnel_tcp.c:368 recv_tcp() intercepted address[tcp:1.1.1.1:21169] client[tcp:100.64.0.0:54614] service[netcat-v2]
[ 230163.690] WARN cmake-build-debug/_deps/ziti-sdk-c-src/library/connect.c:841 connect_reply_cb() conn[0.9] session for service[netcat-v2] became invalid
[ 230163.834] ERROR cmake-build-debug/_deps/ziti-sdk-c-src/library/connect.c:863 connect_reply_cb() conn[0.9] failed to connect, reason=service PLEbGXrSx has no terminators
[ 230163.834] ERROR lib/ziti_tunnel_cbs.c:29 on_ziti_connect() ziti dial failed: connection is closed
[ 230163.834] INFO lib/ziti_tunnel.c:384 ziti_tunneler_close() closing connection: service=netcat-v2, client=tcp:100.64.0.0:54614
Host
[ 0.136] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/ziti.c:224 ziti_init_async() ztx[0] Ziti C SDK version 0.20.12 @a48c51a(HEAD) starting at (2021-02-19T19:10:10.173)
[ 211173.630] ERROR cmake-build-debug/_deps/uv-mbed-src/src/tls_link.c:113 TLS read -104(connection reset by peer)
[ 211173.630] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:790 on_channel_data() ch[0] channel was closed [-104/connection reset by peer]
[ 211173.630] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:717 reconnect_channel() ch[0] reconnecting in 9411 ms (attempt = 1)
[ 211183.363] INFO cmake-build-debug/_deps/ziti-sdk-c-src/library/channel.c:627 hello_reply_cb() ch[0] connected. EdgeRouter version: v0.0.0|local|2020-01-01 01:01:01|amd64|darwin
Connections succeed after the hosting tunneler is restarted.
right now when you launch a sample program, the programs check the ctrl_status
and this status is evented as "partially authenticated" at the wrong time. Update the csdk to not emit that event if not accurate
The UI appears to need to be restarted before it notices the updated version information
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.