summaryrefslogtreecommitdiffhomepage
path: root/windows-service
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2018-04-19 18:55:31 +0200
committerAndrej Mihajlov <and@mullvad.net>2018-04-23 21:51:59 +0200
commit308832d0df052dd4433bda2cc5c586ca9745c249 (patch)
treefb923fc7a264149837fe36d442b920bed8874a48 /windows-service
parent8f6f61ebd6a013f657a2523dbe4b4cfa1a1cb462 (diff)
downloadmullvadvpn-308832d0df052dd4433bda2cc5c586ca9745c249.tar.xz
mullvadvpn-308832d0df052dd4433bda2cc5c586ca9745c249.zip
Add basic windows service
Diffstat (limited to 'windows-service')
-rw-r--r--windows-service/examples/simple_service.rs2
-rw-r--r--windows-service/src/service.rs8
2 files changed, 8 insertions, 2 deletions
diff --git a/windows-service/examples/simple_service.rs b/windows-service/examples/simple_service.rs
index d175e69564..b1a717a8c1 100644
--- a/windows-service/examples/simple_service.rs
+++ b/windows-service/examples/simple_service.rs
@@ -163,7 +163,7 @@ mod simple_service {
define_windows_service!(service_main, handle_service_main);
pub fn handle_service_main(arguments: Vec<OsString>) {
- // Create a shutdown channel to release this thread when stopping the service
+ // Create an event channel to funnel events to worker.
let (event_tx, event_rx) = mpsc::channel();
info!("Received arguments: {:?}", arguments);
diff --git a/windows-service/src/service.rs b/windows-service/src/service.rs
index f609221b8c..1898cf8c1c 100644
--- a/windows-service/src/service.rs
+++ b/windows-service/src/service.rs
@@ -3,7 +3,7 @@ use std::path::PathBuf;
use std::time::Duration;
use std::{io, mem};
-use winapi::shared::winerror::ERROR_SERVICE_SPECIFIC_ERROR;
+use winapi::shared::winerror::{ERROR_SERVICE_SPECIFIC_ERROR, NO_ERROR};
use winapi::um::{winnt, winsvc};
mod errors {
@@ -242,6 +242,12 @@ impl ServiceExitCode {
}
}
+impl Default for ServiceExitCode {
+ fn default() -> Self {
+ ServiceExitCode::Win32(NO_ERROR)
+ }
+}
+
impl<'a> From<&'a winsvc::SERVICE_STATUS> for ServiceExitCode {
fn from(service_status: &'a winsvc::SERVICE_STATUS) -> Self {
if service_status.dwWin32ExitCode == ERROR_SERVICE_SPECIFIC_ERROR {