Ignore:
Timestamp:
Aug 16, 2012, 10:46:01 AM (12 years ago)
Author:
chronos
Message:
  • Fixed: Telnet Com Port option now working without telnet option negotiation.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • PinConnection/UCommTelnet.pas

    r411 r412  
    8585    PortType: TTelnetPortType;
    8686    ErrorCount: Integer;
     87    OptionsNegotationEnable: Boolean;
    8788    procedure Register(Option: TTelnetOption);
    8889    procedure Unregister(Option: TTelnetOption);
     
    147148  I: Integer;
    148149begin
    149   CheckOption;
     150  if Telnet.OptionsNegotationEnable then CheckOption;
    150151  try
    151152    RequestData := TBinarySerializer.Create;
     
    158159    RequestData.WriteByte(Byte(Code));
    159160    RequestData.WriteList(Request, 0, Request.Count);
    160     Telnet.SendCommand(tcSB, RequestData.List, ResponseData.List);
    161     if ResponseData.List[0] <> Byte(Code) then
    162       raise Exception.Create(SWrongResponseOption);
    163     ResponseData.List.Delete(0);
    164     Response.Assign(ResponseData.List);
     161    if Assigned(Response) then begin
     162      Telnet.SendCommand(tcSB, RequestData.List, ResponseData.List);
     163      if ResponseData.List[0] <> Byte(Code) then
     164        raise Exception.Create(SWrongResponseOption);
     165      ResponseData.List.Delete(0);
     166      Response.Assign(ResponseData.List);
     167    end else Telnet.SendCommand(tcSB, RequestData.List, nil);
    165168  finally
    166169    RequestData.Free;
    167     RequestData.Free;
     170    ResponseData.Free;
    168171  end;
    169172end;
     
    201204  FActive := AValue;
    202205  for I := 0 to Options.Count - 1 do
    203     TTelnetOption(Options[I]).Active := AValue;
     206  with TTelnetOption(Options[I]) do begin
     207    if (not ServerChecked) and OptionsNegotationEnable then CheckOption;
     208    Active := AValue;
     209  end;
    204210end;
    205211
     
    224230      end else
    225231      if FState = tsIAC then begin
     232        if Data = Byte(tcIAC) then begin
     233          RawData.WriteByte(Data);
     234          FState := tsNormal;
     235        end else
    226236        if Data = Byte(tcSB) then begin
    227237          // Subnegotation
Note: See TracChangeset for help on using the changeset viewer.