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;