mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 01:49:11 +02:00
fcl-web: TWSServerConnection.HandshakeResponseSent propagates result
This commit is contained in:
parent
d8cd4d283d
commit
569f83e33d
@ -421,7 +421,7 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{ TWSServerConnection }
|
{ TWSServerConnection }
|
||||||
TWSConnectionHandshakeEvent = procedure (aRequest : TWSHandShakeRequest; aResponse : TWSHandShakeResponse) of object;
|
TWSConnectionHandshakeEvent = function(aRequest : TWSHandShakeRequest; aResponse : TWSHandShakeResponse): boolean of object;
|
||||||
|
|
||||||
TWSServerConnection = Class(TWSConnection)
|
TWSServerConnection = Class(TWSConnection)
|
||||||
Private
|
Private
|
||||||
@ -432,7 +432,7 @@ type
|
|||||||
Protected
|
Protected
|
||||||
Procedure DoDisconnect; override;
|
Procedure DoDisconnect; override;
|
||||||
function GetTransport: IWSTransport; override;
|
function GetTransport: IWSTransport; override;
|
||||||
procedure DoPrepareHandshakeResponse(aRequest : TWSHandShakeRequest; aResponse : TWSHandShakeResponse); virtual;
|
function DoPrepareHandshakeResponse(aRequest : TWSHandShakeRequest; aResponse : TWSHandShakeResponse): boolean; virtual;
|
||||||
function GetHandshakeCompleted: Boolean; override;
|
function GetHandshakeCompleted: Boolean; override;
|
||||||
public
|
public
|
||||||
// Transport is owned by connection
|
// Transport is owned by connection
|
||||||
@ -442,7 +442,7 @@ type
|
|||||||
// Do full circle.
|
// Do full circle.
|
||||||
Procedure PerformHandshake; virtual;
|
Procedure PerformHandshake; virtual;
|
||||||
// Given a request, send response
|
// Given a request, send response
|
||||||
function DoHandshake(const aRequest : TWSHandShakeRequest): Boolean;
|
function DoHandshake(const aRequest : TWSHandShakeRequest): Boolean; virtual;
|
||||||
// Has handshake been exchanged?
|
// Has handshake been exchanged?
|
||||||
property HandshakeResponseSent: Boolean read FHandshakeResponseSent;
|
property HandshakeResponseSent: Boolean read FHandshakeResponseSent;
|
||||||
// Extra handshake headers
|
// Extra handshake headers
|
||||||
@ -568,7 +568,7 @@ end;
|
|||||||
|
|
||||||
function TWSTransport.GetSocket: TSocketStream;
|
function TWSTransport.GetSocket: TSocketStream;
|
||||||
begin
|
begin
|
||||||
Result:=FHelper.Socket
|
Result:=FHelper.Socket;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TWSTransport.Create(aStream : TSocketStream);
|
constructor TWSTransport.Create(aStream : TSocketStream);
|
||||||
@ -700,7 +700,7 @@ end;
|
|||||||
|
|
||||||
function TWSMessage.GetAsString: UTF8String;
|
function TWSMessage.GetAsString: UTF8String;
|
||||||
begin
|
begin
|
||||||
Result:=TEncoding.UTF8.GetString(Payload);
|
Result:=UTF8String(TEncoding.UTF8.GetString(Payload));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TWSMessage.GetAsUnicodeString: UnicodeString;
|
function TWSMessage.GetAsUnicodeString: UnicodeString;
|
||||||
@ -946,6 +946,7 @@ end;
|
|||||||
{ TWSFrame }
|
{ TWSFrame }
|
||||||
|
|
||||||
constructor TWSFrame.Create(aType: TFrameType; aIsFinal: Boolean; APayload: TBytes; aMask: Integer=0);
|
constructor TWSFrame.Create(aType: TFrameType; aIsFinal: Boolean; APayload: TBytes; aMask: Integer=0);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Create(aType,aIsFinal,aMask);
|
Create(aType,aIsFinal,aMask);
|
||||||
|
|
||||||
@ -965,14 +966,13 @@ begin
|
|||||||
FFinalFrame := AIsFinal;
|
FFinalFrame := AIsFinal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
constructor TWSFrame.Create(const aMessage: UTF8String; aMask: Integer=0);
|
constructor TWSFrame.Create(const aMessage: UTF8String; aMask: Integer=0);
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Data : TBytes;
|
Data : TBytes;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Data:=TEncoding.UTF8.GetBytes(AMessage);
|
Data:=TEncoding.UTF8.GetBytes(UnicodeString(AMessage));
|
||||||
Create(ftText,True,Data,aMask);
|
Create(ftText,True,Data,aMask);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1463,7 +1463,7 @@ begin
|
|||||||
c := @AValue[0];
|
c := @AValue[0];
|
||||||
while i < len do
|
while i < len do
|
||||||
begin
|
begin
|
||||||
if (c^ >= $00) and (c^ <= $7f) then
|
if (c^ <= $7f) then
|
||||||
n := 0
|
n := 0
|
||||||
else if (c^ >= $c2) and (c^ <= $df) then
|
else if (c^ >= $c2) and (c^ <= $df) then
|
||||||
n := 1
|
n := 1
|
||||||
@ -1793,10 +1793,13 @@ begin
|
|||||||
Result:=FTransport;
|
Result:=FTransport;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWSServerConnection.DoPrepareHandshakeResponse(aRequest: TWSHandShakeRequest; aResponse: TWSHandShakeResponse);
|
function TWSServerConnection.DoPrepareHandshakeResponse(
|
||||||
|
aRequest: TWSHandShakeRequest; aResponse: TWSHandShakeResponse): boolean;
|
||||||
begin
|
begin
|
||||||
If Assigned(OnHandshake) then
|
If Assigned(OnHandshake) then
|
||||||
OnHandShake(aRequest,aResponse);
|
Result:=OnHandShake(aRequest,aResponse)
|
||||||
|
else
|
||||||
|
Result:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1814,8 +1817,8 @@ begin
|
|||||||
H:=Nil;
|
H:=Nil;
|
||||||
aResp:=TWSHandShakeResponse.Create('',FExtraHeaders);
|
aResp:=TWSHandShakeResponse.Create('',FExtraHeaders);
|
||||||
try
|
try
|
||||||
DoPrepareHandshakeResponse(aRequest,aResp);
|
|
||||||
try
|
try
|
||||||
|
DoPrepareHandshakeResponse(aRequest,aResp);
|
||||||
H:=TStringList.Create;
|
H:=TStringList.Create;
|
||||||
aResp.ToStrings(aRequest,H,True);
|
aResp.ToStrings(aRequest,H,True);
|
||||||
Reply:='';
|
Reply:='';
|
||||||
|
Loading…
Reference in New Issue
Block a user