Bladeren bron

* update lnet to 0.5.3

git-svn-id: trunk@7860 -
Almindor 18 jaren geleden
bovenliggende
commit
3b23378ab2
2 gewijzigde bestanden met toevoegingen van 15 en 10 verwijderingen
  1. 6 4
      utils/fppkg/lnet/lftp.pp
  2. 9 6
      utils/fppkg/lnet/lnet.pp

+ 6 - 4
utils/fppkg/lnet/lftp.pp

@@ -31,6 +31,9 @@ interface
 uses
   Classes, lNet, lTelnet;
   
+const
+  DEFAULT_FTP_PORT    = 1025;
+
 type
   TLFTP = class;
   TLFTPClient = class;
@@ -88,7 +91,7 @@ type
     property SocketClass: TLSocketClass read GetSocketClass write SetSocketClass;
     property ControlConnection: TLTelnetClient read FControl;
     property DataConnection: TLTCP read FData;
-    property TransferMethod: TLFTPTransferMethod read FTransferMethod write FTransferMethod;
+    property TransferMethod: TLFTPTransferMethod read FTransferMethod write FTransferMethod default ftPassive;
   end;
 
   { TLFTPTelnetClient }
@@ -203,7 +206,7 @@ type
     property Binary: Boolean read GetBinary write SetBinary;
     property PipeLine: Boolean read FPipeLine write FPipeLine;
     property Echo: Boolean read GetEcho write SetEcho;
-    property StartPort: Word read FStartPort write FStartPort;
+    property StartPort: Word read FStartPort write FStartPort default DEFAULT_FTP_PORT;
     property Transfer: Boolean read GetTransfer;
 
     property OnError: TLSocketErrorEvent read FOnError write FOnError;
@@ -224,7 +227,6 @@ uses
 
 const
   FLE             = #13#10;
-  DEFAULT_PORT    = 1024;
 
   EMPTY_REC: TLFTPStatusRec = (Status: fsNone; Args: ('', ''));
 
@@ -352,7 +354,7 @@ begin
   FStatusSet := []; // empty Event set
   FPassWord := '';
   FChunkSize := DEFAULT_CHUNK;
-  FStartPort := DEFAULT_PORT;
+  FStartPort := DEFAULT_FTP_PORT;
   FSL := TStringList.Create;
   FLastPort := FStartPort;
 

+ 9 - 6
utils/fppkg/lnet/lnet.pp

@@ -1,4 +1,4 @@
-{ lNet v0.5.2
+{ lNet v0.5.3
 
   CopyRight (C) 2004-2006 Ales Katona
 
@@ -465,9 +465,10 @@ var
   a: TSockAddr;
   l: Integer;
 begin
+  Result := '';
   l := SizeOf(a);
-  fpGetSockName(FHandle, @a, @l);
-  Result := HostAddrToStr(LongWord(a.sin_addr));
+  if fpGetSockName(FHandle, @a, @l) = 0 then
+    Result := NetAddrToStr(LongWord(a.sin_addr));
 end;
 
 function TLSocket.CanSend: Boolean;
@@ -562,7 +563,7 @@ end;
 
 function TLSocket.GetLocalPort: Word;
 begin
-  Result := FAddress.sin_port;
+  Result := ntohs(FAddress.sin_port);
 end;
 
 function TLSocket.GetPeerPort: Word;
@@ -1056,6 +1057,7 @@ begin
   if FRootSock.Listen(APort, AIntf) then begin
     FRootSock.FConnected := True;
     FRootSock.FServerSocket := True;
+    FIterator := FRootSock;
     RegisterWithEventer;
     Result := true;
   end;
@@ -1161,8 +1163,9 @@ begin
     end;
     FRootSock.FNextSock := Tmp;
     Tmp.FPrevSock := FRootSock;
-    if not Assigned(FIterator) then
-      FIterator := Tmp;
+    if not Assigned(FIterator)      // if we don't have (bug?) an iterator yet
+    or FIterator.FServerSocket then // or if it's the first socket accepted
+      FIterator := Tmp;  // assign it as iterator (don't assign later acceptees)
     Inc(FCount);
     FEventer.AddHandle(Tmp);
     AcceptEvent(Tmp);