From b809dad94aeb59d591745034b86b273633aaf925 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 7 Oct 2014 16:16:22 -0700 Subject: Bug fix in zerotier-cli (Unix) --- control/NodeControlClient.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'control') diff --git a/control/NodeControlClient.cpp b/control/NodeControlClient.cpp index 11fdc9c8..7d0e04e8 100644 --- a/control/NodeControlClient.cpp +++ b/control/NodeControlClient.cpp @@ -39,6 +39,7 @@ struct _NodeControlClientImpl { void (*resultHandler)(void *,const char *); void *arg; + bool ignoreNextBreak; IpcConnection *ipcc; std::string err; }; @@ -46,8 +47,11 @@ struct _NodeControlClientImpl static void _CBipcResultHandler(void *arg,IpcConnection *ipcc,IpcConnection::EventType event,const char *result) { if ((event == IpcConnection::IPC_EVENT_COMMAND)&&(result)) { - if (strcmp(result,"200 auth OK")) - ((_NodeControlClientImpl *)arg)->resultHandler(((_NodeControlClientImpl *)arg)->arg,result); + if (!strcmp(result,"200 auth OK")) { + ((_NodeControlClientImpl *)arg)->ignoreNextBreak = true; + } else if ((((_NodeControlClientImpl *)arg)->ignoreNextBreak)&&(!strcmp(result,"."))) { + ((_NodeControlClientImpl *)arg)->ignoreNextBreak = false; + } else ((_NodeControlClientImpl *)arg)->resultHandler(((_NodeControlClientImpl *)arg)->arg,result); } } @@ -58,6 +62,7 @@ NodeControlClient::NodeControlClient(const char *ep,const char *authToken,void ( _NodeControlClientImpl *impl = (_NodeControlClientImpl *)_impl; impl->resultHandler = resultHandler; impl->arg = arg; + impl->ignoreNextBreak = false; try { impl->ipcc = new IpcConnection(ep,ZT_IPC_TIMEOUT,&_CBipcResultHandler,_impl); impl->ipcc->printf("auth %s"ZT_EOL_S,authToken); -- cgit v1.2.3