diff --git a/.gitignore b/.gitignore
index 10fe732d4..5cbd6a1a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,4 +31,5 @@ _ReSharper*/
[Ll]ogs/
/[Pp]ackage/
#NZBDrone specific
-*.db
\ No newline at end of file
+*.db
+*Web.Publish.xml
\ No newline at end of file
diff --git a/NzbDrone.Core/Providers/Jobs/JobProvider.cs b/NzbDrone.Core/Providers/Jobs/JobProvider.cs
index 0828dc1c4..e07fc21fc 100644
--- a/NzbDrone.Core/Providers/Jobs/JobProvider.cs
+++ b/NzbDrone.Core/Providers/Jobs/JobProvider.cs
@@ -70,7 +70,7 @@ namespace NzbDrone.Core.Providers.Jobs
{
if (_isRunning)
{
- Logger.Info("Another instance of this job is already running. Ignoring request.");
+ Logger.Warn("Another instance of this job is already running. Ignoring request.");
return false;
}
_isRunning = true;
@@ -78,7 +78,6 @@ namespace NzbDrone.Core.Providers.Jobs
try
{
- Logger.Trace("Getting list of jobs needing to be executed");
var pendingJobs = All().Where(
t => t.Enable &&
@@ -114,16 +113,14 @@ namespace NzbDrone.Core.Providers.Jobs
{
if (_isRunning)
{
- Logger.Info("Another instance of this job is already running. Ignoring request.");
+ Logger.Warn("Another job is already running. Ignoring request.");
return false;
}
_isRunning = true;
}
-
- Logger.Info("User has requested a manual execution of {0}", jobType.Name);
if (_jobThread == null || !_jobThread.IsAlive)
{
- Logger.Debug("Initializing background thread");
+ Logger.Trace("Initializing background thread");
ThreadStart starter = () =>
{
@@ -170,7 +167,7 @@ namespace NzbDrone.Core.Providers.Jobs
{
try
{
- Logger.Info("Starting job '{0}'. Last execution {1}", settings.Name, settings.LastExecution);
+ Logger.Debug("Starting job '{0}'. Last execution {1}", settings.Name, settings.LastExecution);
settings.LastExecution = DateTime.Now;
var sw = Stopwatch.StartNew();
@@ -180,7 +177,7 @@ namespace NzbDrone.Core.Providers.Jobs
settings.Success = true;
sw.Stop();
- Logger.Info("Job '{0}' successfully completed in {1} seconds", timerClass.Name, sw.Elapsed.Minutes,
+ Logger.Debug("Job '{0}' successfully completed in {1} seconds", timerClass.Name, sw.Elapsed.Minutes,
sw.Elapsed.Seconds);
}
catch (Exception e)
@@ -201,7 +198,7 @@ namespace NzbDrone.Core.Providers.Jobs
///
public virtual void Initialize()
{
- Logger.Info("Initializing jobs. Count {0}", _jobs.Count());
+ Logger.Debug("Initializing jobs. Count {0}", _jobs.Count());
var currentTimer = All();
foreach (var timer in _jobs)
diff --git a/NzbDrone/IISController.cs b/NzbDrone/IISController.cs
index 7b23f4c98..d0565bb9e 100644
--- a/NzbDrone/IISController.cs
+++ b/NzbDrone/IISController.cs
@@ -44,7 +44,8 @@ namespace NzbDrone
IISProcess.StartInfo.CreateNoWindow = true;
- IISProcess.OutputDataReceived += (OnDataReceived);
+ IISProcess.OutputDataReceived += (OnOutputDataReceived);
+ IISProcess.ErrorDataReceived += (OnErrorDataReceived);
//Set Variables for the config file.
Environment.SetEnvironmentVariable("NZBDRONE_PATH", Config.ProjectRoot);
@@ -60,6 +61,9 @@ namespace NzbDrone
Logger.Info("Starting process. [{0}]", IISProcess.StartInfo.FileName);
+
+
+
IISProcess.Start();
IISProcess.BeginErrorReadLine();
@@ -73,6 +77,14 @@ namespace NzbDrone
return IISProcess;
}
+ private static void OnErrorDataReceived(object sender, DataReceivedEventArgs e)
+ {
+ if (e == null || String.IsNullOrWhiteSpace(e.Data))
+ return;
+
+ IISLogger.Error(e.Data);
+ }
+
internal static void StopServer()
{
KillProcess(IISProcess);
@@ -82,7 +94,7 @@ namespace NzbDrone
{
string processPath = process.MainModule.FileName;
Logger.Info("[{0}]IIS Process found. Path:{1}", process.Id, processPath);
- if (CleanPath(processPath) == CleanPath(IISExe))
+ if (NormalizePath(processPath) == NormalizePath(IISExe))
{
Logger.Info("[{0}]Process is considered orphaned.", process.Id);
KillProcess(process);
@@ -124,7 +136,7 @@ namespace NzbDrone
}
}
- private static void OnDataReceived(object s, DataReceivedEventArgs e)
+ private static void OnOutputDataReceived(object s, DataReceivedEventArgs e)
{
if (e == null || String.IsNullOrWhiteSpace(e.Data) || e.Data.StartsWith("Request started:") ||
e.Data.StartsWith("Request ended:") || e.Data == ("IncrementMessages called"))
@@ -167,9 +179,19 @@ namespace NzbDrone
}
}
- private static string CleanPath(string path)
+ public static string NormalizePath(string path)
{
- return path.ToLower().Replace("\\", "").Replace("//", "//");
+ if (String.IsNullOrWhiteSpace(path))
+ throw new ArgumentException("Path can not be null or empty");
+
+ var info = new FileInfo(path);
+
+ if (info.FullName.StartsWith(@"\\")) //UNC
+ {
+ return info.FullName.TrimEnd('/', '\\', ' ');
+ }
+
+ return info.FullName.Trim('/', '\\', ' ').ToLower();
}
diff --git a/NzbDrone/NzbDrone.csproj b/NzbDrone/NzbDrone.csproj
index e3b4625cf..1db1eb56e 100644
--- a/NzbDrone/NzbDrone.csproj
+++ b/NzbDrone/NzbDrone.csproj
@@ -13,6 +13,7 @@
v4.0
512
+ false
publish\
true
Disk
@@ -25,7 +26,6 @@
true
0
1.0.0.%2a
- false
false
true
diff --git a/NzbDrone/Program.cs b/NzbDrone/Program.cs
index 310b0846e..eb891dd20 100644
--- a/NzbDrone/Program.cs
+++ b/NzbDrone/Program.cs
@@ -21,6 +21,7 @@ namespace NzbDrone
AppDomain.CurrentDomain.UnhandledException += ((s, e) => AppDomainException(e));
AppDomain.CurrentDomain.ProcessExit += ProgramExited;
AppDomain.CurrentDomain.DomainUnload += ProgramExited;
+ Process.GetCurrentProcess().EnableRaisingEvents = true;
Process.GetCurrentProcess().Exited += ProgramExited;
Config.ConfigureNlog();