summaryrefslogtreecommitdiff
path: root/control
diff options
context:
space:
mode:
Diffstat (limited to 'control')
-rw-r--r--control/NodeControlClient.cpp9
1 files changed, 7 insertions, 2 deletions
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);