/// <summary>
/// Gets MX records from answer collection and ORDERS them by preference.
/// NOTE: Duplicate preference records are appended to end.
/// </summary>
/// <returns></returns>
internal MX_Record[] GetMxRecordsFromAnswers()
{
MX_Record[] retVal = null;
try
{
SortedList mx = new SortedList();
ArrayList duplicateList = new ArrayList();
foreach(Dns_Answer answer in m_Answers){
if(answer.QTYPE == QTYPE.MX){
MX_Record mxRec = (MX_Record)answer.RecordObj;
if(!mx.Contains(mxRec.Preference)){
mx.Add(mxRec.Preference,mxRec);
}
else{
duplicateList.Add(mxRec);
}
}
}
MX_Record[] mxBuff = new MX_Record[mx.Count + duplicateList.Count];
mx.Values.CopyTo(mxBuff,0);
duplicateList.CopyTo(mxBuff,mx.Count);
retVal = mxBuff;
}
catch{
}
return retVal;
}