SSL merge fixes (in XE10.1)
This commit is contained in:
parent
5d75bef32f
commit
7a9455fafd
|
@ -16,18 +16,18 @@ object Form1: TForm1
|
|||
object Button1: TButton
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 75
|
||||
Width = 121
|
||||
Height = 25
|
||||
Caption = 'Button1'
|
||||
Caption = 'Socket.IO test'
|
||||
TabOrder = 0
|
||||
OnClick = Button1Click
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 8
|
||||
Top = 39
|
||||
Width = 75
|
||||
Width = 121
|
||||
Height = 25
|
||||
Caption = 'Button2'
|
||||
Caption = 'Plain websocket test'
|
||||
TabOrder = 1
|
||||
OnClick = Button2Click
|
||||
end
|
||||
|
|
|
@ -92,6 +92,9 @@ end;
|
|||
|
||||
procedure TForm1.Button2Click(Sender: TObject);
|
||||
begin
|
||||
client.Free;
|
||||
server.Free;
|
||||
|
||||
server := TIdWebsocketServer.Create(Self);
|
||||
server.DefaultPort := 12346;
|
||||
server.Active := True;
|
||||
|
|
|
@ -619,8 +619,9 @@ begin
|
|||
//ws://host:port/<resourcename>
|
||||
//about resourcename, see: http://dev.w3.org/html5/websockets/ "Parsing WebSocket URLs"
|
||||
//sURL := Format('ws://%s:%d/%s', [Host, Port, WSResourceName]);
|
||||
{$IFDEF WEBSOCKETSSL}
|
||||
sURL := Format('https://%s:%d/%s', [Host, Port, WSResourceName]);
|
||||
{$IFDEF WS_NO_SSL}
|
||||
{$ELSE}
|
||||
//TODO: depend protocol on usessl - param passing in here
|
||||
sURL := Format('http://%s:%d/%s', [Host, Port, WSResourceName]);
|
||||
{$ENDIF}
|
||||
|
|
|
@ -69,16 +69,16 @@ type
|
|||
function ReadFrame(out aFIN, aRSV1, aRSV2, aRSV3: boolean; out aDataCode: TWSDataCode; out aData: TIdBytes): Integer;
|
||||
function ReadMessage(var aBuffer: TIdBytes; out aDataCode: TWSDataCode): Integer;
|
||||
|
||||
{.$if CompilerVersion >= 26} //XE5
|
||||
//function UTF8Encoding: IIdTextEncoding;
|
||||
{.$else}
|
||||
{$if CompilerVersion >= 26} //XE5
|
||||
function UTF8Encoding: IIdTextEncoding;
|
||||
{$else}
|
||||
function UTF8Encoding: TEncoding;
|
||||
{$ifend}
|
||||
procedure InitComponent; override;
|
||||
public
|
||||
{$IFNDEF WS_NO_SSL}
|
||||
{$IFDEF WEBSOCKETSSL}
|
||||
procedure ClearSSLOptions;
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
function WriteData(aData: TIdBytes; aType: TWSDataCode;
|
||||
aFIN: boolean = true; aRSV1: boolean = false; aRSV2: boolean = false; aRSV3: boolean = false): integer;
|
||||
property BusyUpgrading : Boolean read FBusyUpgrading write FBusyUpgrading;
|
||||
|
@ -304,7 +304,7 @@ begin
|
|||
FPendingWriteCount := 0;
|
||||
end;
|
||||
|
||||
{$IFNDEF WS_NO_SSL}
|
||||
{$IFDEF WEBSOCKETSSL}
|
||||
procedure TIdIOHandlerWebsocket.ClearSSLOptions;
|
||||
begin
|
||||
self.fxSSLOptions.Free;
|
||||
|
@ -603,7 +603,9 @@ begin
|
|||
end;
|
||||
|
||||
function TIdIOHandlerWebsocket.WriteDataToTarget(const ABuffer: TIdBytes; const AOffset, ALength: Integer): Integer;
|
||||
var data: TIdBytes; DataCode:TWSDataCode; fin:boolean;
|
||||
var
|
||||
//data: TIdBytes;
|
||||
DataCode:TWSDataCode; fin:boolean;
|
||||
begin
|
||||
if UseSingleWriteThread and IsWebsocket and (GetCurrentThreadId <> TIdWebsocketWriteThread.Instance.ThreadID) then
|
||||
Assert(False, 'Write done in different thread than TIdWebsocketWriteThread!');
|
||||
|
@ -630,7 +632,7 @@ begin
|
|||
try
|
||||
DataCode := fPayloadInfo.aDataCode;
|
||||
fin := fPayloadInfo.DecLength(ALength);
|
||||
Result := WriteData(data, DataCode, fin,webBit1 in ClientExtensionBits, webBit2 in ClientExtensionBits, webBit3 in ClientExtensionBits);
|
||||
Result := WriteData(ABuffer, DataCode, fin,webBit1 in ClientExtensionBits, webBit2 in ClientExtensionBits, webBit3 in ClientExtensionBits);
|
||||
except
|
||||
FClosedGracefully := True;
|
||||
Result := -1;
|
||||
|
@ -872,17 +874,17 @@ begin
|
|||
FLock.Leave;
|
||||
end;
|
||||
|
||||
{.$if CompilerVersion >= 26} //XE5
|
||||
//function TIdIOHandlerWebsocket.UTF8Encoding: IIdTextEncoding;
|
||||
//begin
|
||||
// Result := IndyTextEncoding_UTF8;
|
||||
//end;
|
||||
{.$else}
|
||||
{$if CompilerVersion >= 26} //XE5
|
||||
function TIdIOHandlerWebsocket.UTF8Encoding: IIdTextEncoding;
|
||||
begin
|
||||
Result := IndyTextEncoding_UTF8;
|
||||
end;
|
||||
{$else}
|
||||
function TIdIOHandlerWebsocket.UTF8Encoding: TEncoding;
|
||||
begin
|
||||
Result := TIdTextEncoding.UTF8;
|
||||
end;
|
||||
{.$ifend}
|
||||
{$ifend}
|
||||
|
||||
function TIdIOHandlerWebsocket.ReadFrame(out aFIN, aRSV1, aRSV2, aRSV3: boolean;
|
||||
out aDataCode: TWSDataCode; out aData: TIdBytes): Integer;
|
||||
|
|
|
@ -2,7 +2,7 @@ unit IdServerIOHandlerWebsocket;
|
|||
interface
|
||||
{$I wsdefines.pas}
|
||||
uses
|
||||
Classes
|
||||
Classes, SysUtils
|
||||
, IdServerIOHandlerStack
|
||||
, IdIOHandlerStack
|
||||
, IdGlobal
|
||||
|
@ -26,7 +26,11 @@ type
|
|||
protected
|
||||
procedure InitComponent; override;
|
||||
{$IFDEF WEBSOCKETSSL}
|
||||
{$if CompilerVersion >= 31} //XE10
|
||||
function GetIOHandlerSelf: TIdSSLIOHandlerSocketOpenSSL;
|
||||
{$else}
|
||||
function CreateOpenSSLSocket:TIdSSLIOHandlerSocketOpenSSL; override;
|
||||
{$endif}
|
||||
{$ENDIF}
|
||||
public
|
||||
function Accept(ASocket: TIdSocketHandle; AListenerThread: TIdThread;
|
||||
|
@ -39,20 +43,27 @@ implementation
|
|||
{ TIdServerIOHandlerStack_Websocket }
|
||||
|
||||
{$IFDEF WEBSOCKETSSL}
|
||||
{$if CompilerVersion >= 31} //XE10
|
||||
function TIdServerIOHandlerWebsocket.GetIOHandlerSelf:TIdSSLIOHandlerSocketOpenSSL;
|
||||
begin
|
||||
Result := TIdIOHandlerWebsocket.Create(nil);
|
||||
end;
|
||||
{$else}
|
||||
function TIdServerIOHandlerWebsocket.CreateOpenSSLSocket:TIdSSLIOHandlerSocketOpenSSL;
|
||||
begin
|
||||
Result := TIdIOHandlerWebsocket.Create(nil);
|
||||
end;
|
||||
{$endif}
|
||||
{$ENDIF}
|
||||
|
||||
function TIdServerIOHandlerWebsocket.Accept(ASocket: TIdSocketHandle;
|
||||
AListenerThread: TIdThread; AYarn: TIdYarn): TIdIOHandler;
|
||||
{$IFNDEF WS_NO_SSL} ?
|
||||
{$IFDEF WEBSOCKETSSL}
|
||||
var
|
||||
LIO: TIdIOHandlerWebsocket;
|
||||
{$ENDIF}
|
||||
begin
|
||||
{$IFDEF WS_NO_SSL} ?
|
||||
{$IFnDEF WEBSOCKETSSL}
|
||||
Result := inherited Accept(ASocket, AListenerThread, AYarn);
|
||||
{$ELSE}
|
||||
Assert(ASocket<>nil);
|
||||
|
|
|
@ -95,7 +95,7 @@ begin
|
|||
|
||||
strmRequest.Position := 0;
|
||||
//first is the type: text or bin
|
||||
wscode := TWSDataCode(context.IOHandler.ReadLongWord);
|
||||
wscode := TWSDataCode(context.IOHandler.ReadUInt32); //ReadLongWord);
|
||||
//then the length + data = stream
|
||||
context.IOHandler.ReadStream(strmRequest);
|
||||
strmRequest.Position := 0;
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
{ $DEFINE WEBSOCKETSSL}
|
||||
{ $DEFINE WEBSOCKETBRIDGE}
|
||||
{$DEFINE WEBSOCKETSSL}
|
||||
{.$DEFINE WEBSOCKETBRIDGE}
|
||||
{$DEFINE SUPEROBJECT}
|
||||
|
|
Loading…
Reference in a new issue