You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by je...@apache.org on 2018/04/02 21:41:31 UTC

thrift git commit: THRIFT-4540 buffered transport broken when trying to re-open a formerly closed transport Client: Delphi Patch: Jens Geyer

Repository: thrift
Updated Branches:
  refs/heads/master 99daecdd1 -> 3c0edfa87


THRIFT-4540 buffered transport broken when trying to re-open a formerly closed transport
Client: Delphi
Patch: Jens Geyer

This closes #1530


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/3c0edfa8
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/3c0edfa8
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/3c0edfa8

Branch: refs/heads/master
Commit: 3c0edfa875218bd83f6b79a7823380e2adc08ae6
Parents: 99daecd
Author: Jens Geyer <je...@apache.org>
Authored: Mon Apr 2 13:57:55 2018 +0200
Committer: Jens Geyer <je...@apache.org>
Committed: Mon Apr 2 23:41:01 2018 +0200

----------------------------------------------------------------------
 lib/delphi/src/Thrift.Transport.pas | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/3c0edfa8/lib/delphi/src/Thrift.Transport.pas
----------------------------------------------------------------------
diff --git a/lib/delphi/src/Thrift.Transport.pas b/lib/delphi/src/Thrift.Transport.pas
index ea25c4b..0774d1b 100644
--- a/lib/delphi/src/Thrift.Transport.pas
+++ b/lib/delphi/src/Thrift.Transport.pas
@@ -842,8 +842,13 @@ end;
 procedure TSocketImpl.Close;
 begin
   inherited Close;
+
+  FInputStream := nil;
+  FOutputStream := nil;
+
   if FOwnsClient
-  then FreeAndNil( FClient);
+  then FreeAndNil( FClient)
+  else FClient := nil;
 end;
 
 function TSocketImpl.GetIsOpen: Boolean;
@@ -954,12 +959,13 @@ function TBufferedStreamImpl.IsOpen: Boolean;
 begin
   Result := (FWriteBuffer <> nil)
         and (FReadBuffer <> nil)
-        and (FStream <> nil);
+        and (FStream <> nil)
+        and FStream.IsOpen;
 end;
 
 procedure TBufferedStreamImpl.Open;
 begin
-  // nothing to do
+  FStream.Open;
 end;
 
 function TBufferedStreamImpl.Read( const pBuf : Pointer; const buflen : Integer; offset: Integer; count: Integer): Integer;
@@ -1106,11 +1112,6 @@ begin
   Create( ATransport, 1024 );
 end;
 
-procedure TBufferedTransportImpl.Close;
-begin
-  FTransport.Close;
-end;
-
 constructor TBufferedTransportImpl.Create( const ATransport: IStreamTransport;  ABufSize: Integer);
 begin
   inherited Create;
@@ -1119,6 +1120,13 @@ begin
   InitBuffers;
 end;
 
+procedure TBufferedTransportImpl.Close;
+begin
+  FTransport.Close;
+  FInputBuffer := nil;
+  FOutputBuffer := nil;  
+end;
+
 procedure TBufferedTransportImpl.Flush;
 begin
   if FOutputBuffer <> nil then begin
@@ -1149,6 +1157,7 @@ end;
 procedure TBufferedTransportImpl.Open;
 begin
   FTransport.Open
+  InitBuffers;  // we need to get the buffers to match FTransport substreams again
 end;
 
 function TBufferedTransportImpl.Read( const pBuf : Pointer; const buflen : Integer; off: Integer; len: Integer): Integer;