diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.Integration')
| -rw-r--r-- | Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs | 47 | ||||
| -rw-r--r-- | Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeTcpClient.cs | 7 |
2 files changed, 34 insertions, 20 deletions
diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs index e17a8eb71..99d841dd6 100644 --- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs @@ -387,35 +387,44 @@ namespace Tango.Integration.ExternalBridge protected async virtual void OnExternalBridgeLoginRequest(MessageContainer container) { + var request = MessageFactory.ParseTangoMessageFromContainer<ExternalBridgeLoginRequest>(container); - LogManager.Log(String.Format("External bridge login attempt:{0}{1}", Environment.NewLine, request.ToJsonString())); + LogManager.Log(String.Format("External bridge login attempt:{0}{1}", Environment.NewLine, request.Message.ToJsonString())); - ExternalBridgeClientConnectedEventArgs args = new ExternalBridgeClientConnectedEventArgs(); - args.Request = request; - args.IpAddress = Adapter.Address; - ConnectionRequest?.Invoke(this, args); + if (MachineOperator.Status != MachineStatuses.Printing || request.Message.Intent != ExternalBridgeLoginIntent.Override) + { + ExternalBridgeClientConnectedEventArgs args = new ExternalBridgeClientConnectedEventArgs(); + args.Request = request; + args.IpAddress = Adapter.Address; + ConnectionRequest?.Invoke(this, args); - var response = new ExternalBridgeLoginResponse(); - response.Authenticated = args.Confirmed; - response.SerialNumber = Machine.SerialNumber; - response.DeviceInformation = MachineOperator.DeviceInformation; + var response = new ExternalBridgeLoginResponse(); + response.Authenticated = args.Confirmed; + response.SerialNumber = Machine.SerialNumber; + response.DeviceInformation = MachineOperator.DeviceInformation; - IsInSession = args.Confirmed; + IsInSession = args.Confirmed; - if (IsInSession) - { - LogManager.Log("External bridge client has logged-in successfully."); - MachineOperator.EnableDiagnostics = false; - MachineOperator.EnableEmbeddedDebugging = false; - SessionIntent = request.Message.Intent; + if (IsInSession) + { + LogManager.Log("External bridge client has logged-in successfully."); + MachineOperator.EnableDiagnostics = false; + MachineOperator.EnableEmbeddedDebugging = false; + SessionIntent = request.Message.Intent; + } + else + { + LogManager.Log("External bridge client login failed, invalid password."); + } + + await SendResponse<ExternalBridgeLoginResponse>(response, container.Token); } else { - LogManager.Log("External bridge client login failed."); + LogManager.Log("External bridge client login failed because the machine is currently printing."); + await SendResponse<ExternalBridgeLoginResponse>(new ExternalBridgeLoginResponse(), container.Token, false, ErrorCode.GeneralError, "Machine connection override is not permitted while printing."); } - - await SendResponse<ExternalBridgeLoginResponse>(response, container.Token); } #endregion diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeTcpClient.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeTcpClient.cs index a704d30d1..9492386ed 100644 --- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeTcpClient.cs +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeTcpClient.cs @@ -100,7 +100,12 @@ namespace Tango.Integration.ExternalBridge catch (Exception ex) { LogRequestFailed(login, ex); - await base.Disconnect(); + try + { + await Adapter.Disconnect(); + } + catch { } + throw ex; } |
