Просмотр исходного кода

Merge branch '21-botgroups' into next

* 21-botgroups:
  * Display unknown nodes as '(unknown)' and sort at top
  * Fix crash when there's no nodename
Bryan Drewery 14 лет назад
Родитель
Сommit
db5694744d
1 измененных файлов с 16 добавлено и 5 удалено
  1. 16 5
      src/botnet.c

+ 16 - 5
src/botnet.c

@@ -524,17 +524,27 @@ void answer_local_whom(int idx, int chan)
 }
 
 bool sortNodes(const bd::String nodeA, const bd::String nodeB) {
+  const bd::String unknown("(unknown)");
+  if (nodeA == unknown) {
+    return true;
+  } else if (nodeB == unknown) {
+    return false;
+  }
   // Reverse the domains
   const bd::Array<bd::String> partsA(nodeA.split("."));
   const bd::Array<bd::String> partsB(nodeB.split("."));
   bd::Array<bd::String> reversedPartsA, reversedPartsB;
   bd::String reversedNodeA, reversedNodeB;
 
-  for (size_t i = partsA.length() - 1; i > 0; --i) {
-    reversedPartsA << partsA[i - 1];
+  if (partsA.length()) {
+    for (size_t i = partsA.length() - 1; i > 0; --i) {
+      reversedPartsA << partsA[i - 1];
+    }
   }
-  for (size_t i = partsB.length() - 1; i > 0; --i) {
-    reversedPartsB << partsB[i - 1];
+  if (partsB.length()) {
+    for (size_t i = partsB.length() - 1; i > 0; --i) {
+      reversedPartsB << partsB[i - 1];
+    }
   }
   reversedNodeA = reversedPartsA.join(".");
   reversedNodeB = reversedPartsB.join(".");
@@ -569,7 +579,8 @@ tell_bots(int idx, int up, const char *nodename)
 
       // Include this bot?
       const bool group_match = group.length() && botgroups.find(group) != botgroups.npos;
-      const bd::String node((const char*) get_user(&USERENTRY_NODENAME, u));
+      const char *userNode = (const char*) get_user(&USERENTRY_NODENAME, u);
+      const bd::String node(userNode ? userNode : "(unknown)");
       const bool node_match = ((nodename && node.length() && wild_match(nodename, node.c_str())) || !nodename);
       const bool bot_found = findbot(u->handle);
       const bool up_down_match = (nodename || (!nodename && ((up && bot_found) || (!up && !bot_found))));