for the last attempt of choosing a port, let the OS decide
authorbeware <beware@bircd.org>
Sat, 25 Feb 2012 15:46:17 +0000 (15:46 +0000)
committerbeware <beware@bircd.org>
Sat, 25 Feb 2012 15:46:17 +0000 (15:46 +0000)
git-svn-id: file:///svnroot/lcore/trunk@114 b1de8a11-f9be-4011-bde0-cc7ace90066a

dnssync.pas

index 79ace01ca056e4d63312b7a2e807a307f539fb33..f6b02817fd07301b75d1d3920e7209e0912bdad8 100644 (file)
@@ -132,7 +132,7 @@ procedure setupsocket;
 var\r
   inAddrtemp : TInetSockAddrV;\r
   biniptemp:tbinip;\r
 var\r
   inAddrtemp : TInetSockAddrV;\r
   biniptemp:tbinip;\r
-  a,retrycount:integer;\r
+  a,retrycount,porttemp:integer;\r
   bindresult:boolean;\r
 begin\r
   biniptemp := getcurrentsystemnameserverbin(id);\r
   bindresult:boolean;\r
 begin\r
   biniptemp := getcurrentsystemnameserverbin(id);\r
@@ -144,7 +144,13 @@ begin
   for a := 0 to numsockused-1 do begin\r
     retrycount := 5;\r
     repeat\r
   for a := 0 to numsockused-1 do begin\r
     retrycount := 5;\r
     repeat\r
-      makeinaddrv(biniptemp,inttostr( 1024 + randominteger(65536 - 1024) ),inaddrtemp);\r
+      if (retrycount <= 1) then begin\r
+        porttemp := 0; //for the last attempt let the OS decide\r
+      end else begin\r
+        porttemp := 1024 + randominteger(65536 - 1024);\r
+      end;\r
+\r
+      makeinaddrv(biniptemp,inttostr( porttemp ),inaddrtemp);\r
 \r
       fd[a] := Socket(biniptemp.family,SOCK_DGRAM,0);\r
       bindresult := {$ifdef win32}Not{$endif} Bind(fd[a],inAddrtemp,inaddrsize(inaddrtemp));\r
 \r
       fd[a] := Socket(biniptemp.family,SOCK_DGRAM,0);\r
       bindresult := {$ifdef win32}Not{$endif} Bind(fd[a],inAddrtemp,inaddrsize(inaddrtemp));\r