From 93dd35b64d70b50cb6e3d649e77f21e344780966 Mon Sep 17 00:00:00 2001
From: angelblue05 <angelblue.dev@gmail.com>
Date: Mon, 4 Feb 2019 02:01:22 -0600
Subject: [PATCH] Merge pull request #209 from libanp/develop

Fix version checks
---
 resources/lib/helper/utils.py                 | 24 +++++------------
 .../lib/jellyfin/core/connection_manager.py   | 26 ++++++-------------
 2 files changed, 15 insertions(+), 35 deletions(-)

diff --git a/resources/lib/helper/utils.py b/resources/lib/helper/utils.py
index da7bee4d..97906727 100644
--- a/resources/lib/helper/utils.py
+++ b/resources/lib/helper/utils.py
@@ -10,6 +10,7 @@ import re
 import unicodedata
 import urllib
 from uuid import uuid4
+from distutils.version import LooseVersion
 
 import xbmc
 import xbmcaddon
@@ -95,25 +96,14 @@ def compare_version(a, b):
         1 a is larger
         0 equal
     '''
-    a = a.split('.')
-    b = b.split('.')
+    a = LooseVersion(a)
+    b = LooseVersion(b)
 
-    for i in range(0, max(len(a), len(b)), 1):
-        try:
-            aVal = a[i]
-        except IndexError:
-            aVal = 0
+    if a < b:
+        return -1
 
-        try:    
-            bVal = b[i]
-        except IndexError:
-            bVal = 0
-
-        if aVal < bVal:
-            return -1
-
-        if aVal > bVal:
-            return 1
+    if a > b:
+        return 1
 
     return 0
 
diff --git a/resources/lib/jellyfin/core/connection_manager.py b/resources/lib/jellyfin/core/connection_manager.py
index b16108ff..176ccedd 100644
--- a/resources/lib/jellyfin/core/connection_manager.py
+++ b/resources/lib/jellyfin/core/connection_manager.py
@@ -8,6 +8,7 @@ import hashlib
 import socket
 import time
 from datetime import datetime
+from distutils.version import LooseVersion
 
 from credentials import Credentials
 from http import HTTP
@@ -394,26 +395,15 @@ class ConnectionManager(object):
             1 a is larger
             0 equal
         '''
-        a = a.split('.')
-        b = b.split('.')
+        a = LooseVersion(a)
+        b = LooseVersion(b)
 
-        for i in range(0, max(len(a), len(b)), 1):
-            try:
-                aVal = a[i]
-            except IndexError:
-                aVal = 0
-
-            try:    
-                bVal = b[i]
-            except IndexError:
-                bVal = 0
-
-            if aVal < bVal:
-                return -1
-
-            if aVal > bVal:
-                return 1
+        if a < b:
+            return -1
 
+        if a > b:
+            return 1
+        
         return 0
 
     def _string_equals_ignore_case(self, str1, str2):