From f9bcb35800d3715ddd66fa81169fe939485e546c Mon Sep 17 00:00:00 2001
From: Artem Prilutskiy <performer@aesyle>
Date: Thu, 5 Jan 2017 21:35:55 +0300
Subject: [PATCH] ..

---
 SVXLink/echolink/BrandMeisterBridge.cpp | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/SVXLink/echolink/BrandMeisterBridge.cpp b/SVXLink/echolink/BrandMeisterBridge.cpp
index c5d6e34..2305278 100644
--- a/SVXLink/echolink/BrandMeisterBridge.cpp
+++ b/SVXLink/echolink/BrandMeisterBridge.cpp
@@ -89,23 +89,33 @@ void BrandMeisterBridge::setTalker(const char* call, const char* name)
     return;
   }
 
-  const char* delimiter = strpbrk(call, " -\n");
-  if (delimiter != NULL)
+  const char* delimiter1 = strpbrk(call, " -\n");
+  const char* delimiter2 = strpbrk(name, "\n");
+
+  if (delimiter1 != NULL)
   {
     // Remove characters after call-sign
-    size_t length = delimiter - call;
+    size_t length = delimiter1 - call;
     char* buffer = (char*)alloca(length + sizeof(uint32_t));
     strncpy(buffer, call, length);
     call = buffer;
   }
+  if (delimiter2 != NULL)
+  {
+    // Remove characters after talker name
+    size_t length = delimiter2 - name;
+    char* buffer = (char*)alloca(length + sizeof(uint32_t));
+    strncpy(buffer, name, length);
+    name = buffer;
+  }
 
   uint32_t number = store->getPrivateIDForCall(call);
   if (number == 0)
     number = unknown;
 
-  syslog(LOG_INFO, "Set talker ID to %d for call-sign %s", number, call);
+  syslog(LOG_INFO, "Set talker ID to %d for call-sign %s (%s)", number, call, name);
   proxy->setTalkerID(number);
-  proxy->setTalkerAlias(call);
+  proxy->setTalkerAlias(name);
 }
 
 void BrandMeisterBridge::handleChatMessage(const char* text)
@@ -128,12 +138,13 @@ void BrandMeisterBridge::handleChatMessage(const char* text)
     if (delimiter != NULL)
     {
       const char* call = delimiter + 3;
-      setTalker(call, NULL);
+      setTalker(call, call);
     }
     else
     {
       syslog(LOG_INFO, "Set talker ID to %d (call-sign was not fit into chat message)", unknown);
       proxy->setTalkerID(unknown);
+      proxy->setTalkerAlias("<unknown>");
     }
   }
 }