When processing events, AttachCurrentThread is called, but matching DetachCurrentThread was not being called This prevented main thread from exiting
78 lines
2.8 KiB
Java
78 lines
2.8 KiB
Java
import com.zerotier.sockets.*;
|
|
|
|
//
|
|
// Test for:
|
|
// Java process does not exit after finishing libzt work
|
|
// https://github.com/zerotier/libzt/issues/242
|
|
//
|
|
// Run and ensure that process exits
|
|
//
|
|
public class ExitTest {
|
|
|
|
public static void main(String[] args) throws InterruptedException {
|
|
|
|
long networkId = Long.parseUnsignedLong("ebe7fbd445e76ac6", 16);
|
|
String storagePath = "exittest_storage";
|
|
|
|
ZeroTierNode node = new ZeroTierNode();
|
|
node.initFromStorage(storagePath);
|
|
node.initSetEventHandler(new ZeroTierEventListener() {
|
|
@Override
|
|
public void onZeroTierEvent(long l, int eventCode) {
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NODE_UP) {
|
|
System.err.println("ZTS_EVENT_NODE_UP");
|
|
}
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NODE_ONLINE) {
|
|
System.err.println("ZTS_EVENT_NODE_ONLINE");
|
|
}
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NODE_OFFLINE) {
|
|
System.err.println("ZTS_EVENT_NODE_OFFLINE");
|
|
}
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NODE_DOWN) {
|
|
System.err.println("ZTS_EVENT_NODE_DOWN");
|
|
}
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NETWORK_READY_IP4) {
|
|
System.err.println("ZTS_EVENT_NETWORK_READY_IP4");
|
|
}
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NETWORK_READY_IP6) {
|
|
System.err.println("ZTS_EVENT_NETWORK_READY_IP6");
|
|
}
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NETWORK_DOWN) {
|
|
System.err.println("ZTS_EVENT_NETWORK_DOWN");
|
|
}
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NETWORK_OK) {
|
|
System.err.println("ZTS_EVENT_NETWORK_OK");
|
|
}
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NETWORK_ACCESS_DENIED) {
|
|
System.err.println("ZTS_EVENT_NETWORK_ACCESS_DENIED");
|
|
}
|
|
if (eventCode == ZeroTierNative.ZTS_EVENT_NETWORK_NOT_FOUND) {
|
|
System.err.println("ZTS_EVENT_NETWORK_NOT_FOUND");
|
|
}
|
|
}
|
|
});
|
|
|
|
System.err.println("start");
|
|
node.start();
|
|
|
|
System.err.println("delay until online");
|
|
while (!node.isOnline()) {
|
|
ZeroTierNative.zts_util_delay(50);
|
|
}
|
|
System.err.println("done delaying");
|
|
|
|
System.out.println("join");
|
|
node.join(networkId);
|
|
|
|
System.out.println("delaying until transport ready");
|
|
while (! node.isNetworkTransportReady(networkId)) {
|
|
ZeroTierNative.zts_util_delay(50);
|
|
}
|
|
|
|
System.err.println("stop");
|
|
node.stop();
|
|
|
|
System.err.println("exiting");
|
|
}
|
|
}
|