summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/contrib/srvrec.cc7
-rw-r--r--apt-pkg/contrib/srvrec.h5
2 files changed, 10 insertions, 2 deletions
diff --git a/apt-pkg/contrib/srvrec.cc b/apt-pkg/contrib/srvrec.cc
index d5d89fc67..352a56970 100644
--- a/apt-pkg/contrib/srvrec.cc
+++ b/apt-pkg/contrib/srvrec.cc
@@ -12,6 +12,8 @@
#include <arpa/nameser.h>
#include <resolv.h>
+#include <algorithm>
+
#include <apt-pkg/error.h>
#include "srvrec.h"
@@ -89,5 +91,10 @@ bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result)
Result.push_back(rec);
}
+ // sort them
+ std::stable_sort(Result.begin(), Result.end());
+
+ // FIXME: implement weight selection as specified in RFC-2782
+
return true;
}
diff --git a/apt-pkg/contrib/srvrec.h b/apt-pkg/contrib/srvrec.h
index 583907706..78d238c46 100644
--- a/apt-pkg/contrib/srvrec.h
+++ b/apt-pkg/contrib/srvrec.h
@@ -21,8 +21,9 @@ class SrvRec
u_int16_t weight;
u_int16_t port;
- // see rfc-2782
- //int random;
+ bool operator<(SrvRec const &other) const {
+ return this->priority < other.priority;
+ }
};
bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result);