[Devel] [ openser-Bugs-1720478 ] Bad Sort lcr records by prefix_len and priority

SourceForge.net noreply at sourceforge.net
Thu May 17 15:40:29 CEST 2007


Bugs item #1720478, was opened at 2007-05-17 00:11
Message generated for change (Comment added) made by osas
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=743020&aid=1720478&group_id=139143

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: modules
Group: ver 1.2.x
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Angel Carpintero (sackrtp)
Assigned to: Nobody/Anonymous (nobody)
Summary: Bad Sort lcr records by prefix_len and priority

Initial Comment:
I guess that comp_lcrs() function in modules/lcr/lcr_mod.c is not ordering correctly by priority.

if (lcr_record1.priority < lcr_record2.priority) {
   result = 1;
}
else if (lcr_record1.priority == lcr_record2.priority) {
 /* Nothing to do. */
 result = 0;
}

Higher priority should return 1.

So a simple change to fix that issue will be :


if (lcr_record1.priority > lcr_record2.priority) {

* svn diff

 Index: modules/lcr/lcr_mod.c
===================================================================
--- modules/lcr/lcr_mod.c       (revisión: 2220)
+++ modules/lcr/lcr_mod.c       (copia de trabajo)
@@ -592,7 +592,7 @@
        }
        else if (lcr_record1.prefix_len == lcr_record2.prefix_len) {
                /* Sort by priority. */
-               if (lcr_record1.priority < lcr_record2.priority) {
+               if (lcr_record1.priority > lcr_record2.priority) {
                        result = 1;
                }
                else if (lcr_record1.priority == lcr_record2.priority) {

----------------------------------------------------------------------

Comment By: Ovidiu Sas (osas)
Date: 2007-05-17 09:40

Message:
Logged In: YES 
user_id=1395524
Originator: NO

>From the lcr README:
Matching gateways are then ordered for forwarding purpose:
 (1) according to longest user part match,
 (2) according to gateway's priority,
 (3) randomly.


I coded this using the assumption that 0 is the highest priority, followed
by 1, then 2 and so on (priority being an unsigned int).  I think that we
should keep it as is and update the documentation, otherwise it will be
confusing for 1.1.x to 1.2.x migration (backward compatibility).

----------------------------------------------------------------------

Comment By: Juha Heinanen (juhe)
Date: 2007-05-17 08:31

Message:
Logged In: YES 
user_id=1332122
Originator: NO

This part of lcr code was written by Ovidiu Sas.  I'll let him comment on
this ticket.

// Juha


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=743020&aid=1720478&group_id=139143



More information about the Devel mailing list