Hi, According to the registrar documentation module, "... the RURI will be overwritten with the highest-q rated contact ..." when the lookup() function is called. My testing shows that the first matching contact is used.
I'm running OpenSIPS V1.6.2. I should mention that I've written a "heartbeat" module that pings the registered contacts periodically and accepts a "load" value in the response that is used to calculate the q-value. A few bits in the Cflags are used to keep track of those that respond back and I've modified the show command to report the meaning of the flags. Here's the snippet from the output of the "opensipsctl ul show": AOR:: hmp Contact:: sip:s...@10.27.193.121 Q=0 Expires:: 5051 Callid:: 1...@10.27.193.121 Cseq:: 78 User-agent:: oSIP/wicsip-2.11.MR3519 State:: CS_NEW Flags:: 1 Cflag:: 34 (hb enabled, 0 unanswered) Socket:: udp:10.27.193.119:5060 Methods:: 4294967295 Contact:: sip:s...@10.27.194.54 Q=1 Expires:: 6782 Callid:: 2...@10.27.194.54 Cseq:: 6 User-agent:: oSIP/wicsip-3.4.13 State:: CS_NEW Flags:: 1 Cflag:: 34 (hb enabled, 0 unanswered) Socket:: udp:10.27.193.119:5060 Methods:: 4294967295 ... and here's a snippet of the openser.cfg file that is related: $var(aor) = "sip:h...@wic.west.com"; lookup("location","b","$var(aor)"); xlog("L_DBG", "sending to hmp: $mb, $ru, $rs\n"); switch ($retcode) { case -1: # no contact xlog("L_ERR", "01000001 $pp Forwarding to HMP failed -- no registered contact. r-uri: $ru, callid: $ci, p-charging-vector: $(hdr(P-Charging-Vector)), contact: $ct\n"); sl_send_reply("404", "Not Found"); exit; case -3: # internal error xlog("L_ERR", "01000001 $pp Forwarding to HMP failed. r-uri: $ru, callid: $ci, p-charging-vector: $(hdr(P-Charging-Vector)), contact: $ct\n"); sl_send_reply("404", "Not Found"); exit; case -2: # method not supported xlog("L_ERR", "01000001 $pp Forwarding to HMP failed. r-uri: $ru, callid: $ci, p-charging-vector: $(hdr(P-Charging-Vector)), contact: $ct\n"); sl_send_reply("405", "Not Found"); exit; } if (! t_relay() ) { sl_reply_error(); } exit; A tcpdump has verified that the first contact listed is the one selected by the lookup() function even though the q-value of that contact is less than the second contact in the list. I'm not interested in parallel forking but, instead, want to forward requests to the least-loaded endpoint. Am I doing something wrong? Thanks! _______________________________________________ Users mailing list Users@lists.opensips.org http://lists.opensips.org/cgi-bin/mailman/listinfo/users