diff --git a/modules/ProcUtils.py b/modules/ProcUtils.py
index dfead69..97e1dcb 100644
--- a/modules/ProcUtils.py
+++ b/modules/ProcUtils.py
@@ -50,9 +50,9 @@ def httpinit(url, timeout=10, urlConn=None):
     return urlConn, proxy
 
 
-def httpdl(url, request, localpath='.', outputfilename=None, ntries=5,
-           uncompress=False, timeout=10., reqHeaders={}, verbose=False,
-           reuseConn=False, urlConn=None):
+def _httpdl(url, request, localpath='.', outputfilename=None, ntries=5,
+            uncompress=False, timeout=30., reqHeaders={}, verbose=False,
+            reuseConn=False, urlConn=None):
     """
     Copy the contents of a file from a given URL to a local file
     Inputs:
@@ -102,16 +102,16 @@ def httpdl(url, request, localpath='.', outputfilename=None, ntries=5,
         if response.status in (400, 401, 403, 404, 416):
             status = response.status
         elif response.status not in (200, 206):
+            urlConn.close()
             if ntries > 0:
-                urlConn.close()
                 if verbose:
                     print "Connection interrupted, retrying up to %d more time(s)" % ntries
                 sleep(sleepytime)
-                status = httpdl(url, request, localpath=localpath,
-                                outputfilename=outputfilename,
-                                ntries=ntries - 1, timeout=timeout,
-                                uncompress=uncompress, reuseConn=reuseConn,
-                                urlConn=None, verbose=verbose)
+                urlConn, status = _httpdl(url, request, localpath=localpath,
+                                          outputfilename=outputfilename,
+                                          ntries=ntries - 1, timeout=timeout,
+                                          uncompress=uncompress, reuseConn=reuseConn,
+                                          urlConn=None, verbose=verbose)
             else:
                 print 'We failed to reach a server.'
                 print 'Please retry this request at a later time.'
@@ -119,25 +119,27 @@ def httpdl(url, request, localpath='.', outputfilename=None, ntries=5,
                 print 'HTTP Error: {0} - {1}'.format(response.status,
                                                      response.reason)
                 status = response.status
+                urlConn = None
 
     except socket.error as socmsg:
+        if response:
+            urlConn.close()
         if ntries > 0:
-            if response:
-                urlConn.close()
             if verbose:
                 print 'Connection error, retrying up to {0} more time(s)'. \
                     format(ntries)
             sleep(sleepytime)
-            status = httpdl(url, request, localpath=localpath,
-                            outputfilename=outputfilename, ntries=ntries - 1,
-                            timeout=timeout, uncompress=uncompress,
-                            reuseConn=reuseConn, urlConn=None, verbose=verbose)
+            urlConn, status = _httpdl(url, request, localpath=localpath,
+                                      outputfilename=outputfilename, ntries=ntries - 1,
+                                      timeout=timeout, uncompress=uncompress,
+                                      reuseConn=reuseConn, urlConn=None, verbose=verbose)
         else:
             print 'URL attempted: %s' % url
             print 'Well, this is embarrassing...an error occurred that we just cannot get past...'
             print 'Here is what we know: %s' % socmsg
             print 'Please retry this request at a later time.'
             status = 500
+            urlConn = None
     except:
         if response:
             print 'Well, the server did not like this...reports: {0}'. \
@@ -179,11 +181,11 @@ def httpdl(url, request, localpath='.', outputfilename=None, ntries=5,
                     print bytestr, sleepytime
                     urlConn.close()
                     sleep(sleepytime)
-                    status = httpdl(url, request, localpath=localpath,
-                                    outputfilename=outputfilename,
-                                    timeout=timeout, uncompress=uncompress,
-                                    reqHeaders=reqHeader, reuseConn=reuseConn,
-                                    urlConn=None, verbose=verbose)
+                    urlConn, status = _httpdl(url, request, localpath=localpath,
+                                              outputfilename=outputfilename,
+                                              timeout=timeout, uncompress=uncompress,
+                                              reqHeaders=reqHeader, reuseConn=reuseConn,
+                                              urlConn=None, verbose=verbose)
 
             if not reuseConn:
                 urlConn.close()
@@ -199,7 +201,19 @@ def httpdl(url, request, localpath='.', outputfilename=None, ntries=5,
             if not reuseConn:
                 urlConn.close()
 
-    return status
+    return (urlConn, status)
+
+
+def httpdl(url, request, localpath='.', outputfilename=None, ntries=5,
+           uncompress=False, timeout=30., reqHeaders={}, verbose=False,
+           reuseConn=False, urlConn=None):
+    urlConn, status = _httpdl(url, request, localpath, outputfilename, ntries,
+                              uncompress, timeout, reqHeaders, verbose,
+                              reuseConn, urlConn)
+    if reuseConn:
+        return (urlConn, status)
+    else:
+        return status
 
 
 def uncompressFile(compressed_file):
diff --git a/modules/anc_utils.py b/modules/anc_utils.py
index fa4d56b..a1ba712 100644
--- a/modules/anc_utils.py
+++ b/modules/anc_utils.py
@@ -579,9 +579,9 @@ Using current working directory for storing the ancillary database file: %s''' %
 
                     if self.verbose:
                         print("Downloading '" + FILE + "' to " + self.dirs['path'])
-                    status = ProcUtils.httpdl(self.data_site, ''.join(['/cgi/getfile/', FILE]),
-                                              self.dirs['path'], timeout=self.timeout, uncompress=True,
-                                              reuseConn=True, urlConn=urlConn, verbose=self.verbose)
+                    urlConn, status = ProcUtils.httpdl(self.data_site, ''.join(['/cgi/getfile/', FILE]),
+                            self.dirs['path'],timeout=self.timeout, uncompress=True,
+                            reuseConn=True, urlConn=urlConn, verbose=self.verbose)
                     gc.collect()
                     if status:
                         print("*** ERROR: The HTTP transfer failed with status code " + str(status) + ".")
diff --git a/modules/lut_utils.py b/modules/lut_utils.py
index 9e6bc13..1ffefa5 100644
--- a/modules/lut_utils.py
+++ b/modules/lut_utils.py
@@ -80,7 +80,7 @@ class lut_utils:
             os.makedirs(outputdir)
 
         # Get list of remote files and download if necessary
-        status = ProcUtils.httpdl(
+        urlConn, status = ProcUtils.httpdl(
             self.data_site, "/Ancillary/LUTs/aquarius",
             localpath=outputdir, outputfilename="index.html",
             timeout=self.timeout, reuseConn=True,
@@ -93,7 +93,7 @@ class lut_utils:
         operlist = ProcUtils.cleanList(listFile)
         ProcUtils.remove(listFile)
         for f in operlist:
-            status = ProcUtils.httpdl(
+            urlConn, status = ProcUtils.httpdl(
                 self.data_site, "/Ancillary/LUTs/aquarius/" + f,
                 localpath=outputdir,
                 timeout=self.timeout, reuseConn=True,
@@ -118,9 +118,9 @@ class lut_utils:
         # elements.dat
         url = "/Ancillary/LUTs/seawifs/elements.dat"
         outputdir = os.path.join(self.dirs['var'], 'seawifs')
-        status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
-                                  reuseConn=True, urlConn=urlConn,
-                                  timeout=self.timeout, verbose=self.verbose)
+        urlConn, status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
+                                           reuseConn=True, urlConn=urlConn,
+                                           timeout=self.timeout, verbose=self.verbose)
         if status:
             print "* ERROR: The download failed with status code: " + str(status)
             print "* Please check your network connection and for the existence of the remote file:"
@@ -132,9 +132,9 @@ class lut_utils:
         # time_anomaly.txt
         url = "/Ancillary/LUTs/seawifs/time_anomaly.txt"
         outputdir = os.path.join(self.dirs['var'], 'seawifs')
-        status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
-                                  timeout=self.timeout, reuseConn=True,
-                                  urlConn=urlConn, verbose=self.verbose)
+        urlConn, status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
+                                           timeout=self.timeout,reuseConn=True,
+                                           urlConn=urlConn, verbose=self.verbose)
         if status:
             print "*** ERROR: The download failed with status code: " + str(status)
             print "*** Please check your network connection and for the existence of the remote file:"
@@ -163,9 +163,9 @@ class lut_utils:
 
             url = "/Ancillary/LUTs/modis/leapsec.dat"
             outputdir = os.path.join(self.dirs['var'], 'modis')
-            status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
-                                      timeout=self.timeout, reuseConn=True,
-                                      urlConn=urlConn, verbose=self.verbose)
+            urlConn, status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
+                                               timeout=self.timeout, reuseConn=True,
+                                               urlConn=urlConn, verbose=self.verbose)
             if status:
                 print "* ERROR: The download failed with status code: " + str(status)
                 print "* Please check your network connection and for the existence of the remote file:"
@@ -176,9 +176,9 @@ class lut_utils:
 
             url = "/Ancillary/LUTs/modis/utcpole.dat"
             outputdir = os.path.join(self.dirs['var'], 'modis')
-            status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
-                                      timeout=self.timeout, reuseConn=True,
-                                      urlConn=urlConn, verbose=self.verbose)
+            urlConn, status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
+                                               timeout=self.timeout, reuseConn=True,
+                                               urlConn=urlConn, verbose=self.verbose)
             if status:
                 print "* ERROR: The download failed with status code: " + str(status)
                 print "* Please check your network connection and for the existence of the remote file:"
@@ -196,9 +196,9 @@ class lut_utils:
 
             url = "/Ancillary/LUTs/viirsn/IETTime.dat"
             outputdir = os.path.join(self.dirs['var'], 'viirsn')
-            status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
-                                      timeout=self.timeout, reuseConn=True,
-                                      urlConn=urlConn, verbose=self.verbose)
+            urlConn, status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
+                                               timeout=self.timeout, reuseConn=True,
+                                               urlConn=urlConn, verbose=self.verbose)
             if status:
                 print "* ERROR: The download failed with status code: " + str(status)
                 print "* Please check your network connection and for the existence of the remote file:"
@@ -209,9 +209,9 @@ class lut_utils:
 
                 url = "/Ancillary/LUTs/viirsn/polar_wander.ascii"
             outputdir = os.path.join(self.dirs['var'], 'viirsn')
-            status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
-                                      timeout=self.timeout, reuseConn=True,
-                                      urlConn=urlConn, verbose=self.verbose)
+            urlConn, status = ProcUtils.httpdl(self.data_site, url, localpath=outputdir,
+                                               timeout=self.timeout, reuseConn=True,
+                                               urlConn=urlConn, verbose=self.verbose)
             if status:
                 print "* ERROR: The download failed with status code: " + str(status)
                 print "* Please check your network connection and for the existence of the remote file:"
@@ -236,7 +236,7 @@ class lut_utils:
 
             # Get remote list of files and download if necessary
             # OPER
-            status = ProcUtils.httpdl(
+            urlConn, status = ProcUtils.httpdl(
                 self.data_site, "/Ancillary/LUTs/" + msn[self.mission] + "/" + cal + "/OPER",
                 localpath=outputdir, outputfilename="index.html",
                 timeout=self.timeout, reuseConn=True,
@@ -290,7 +290,7 @@ class lut_utils:
             # check for existing files, if not there, get 'em!
             for f in operlist:
                 if not os.path.exists(os.path.join(outputdir, f)):
-                    status = ProcUtils.httpdl(
+                    urlConn, status = ProcUtils.httpdl(
                         self.data_site,
                         "/Ancillary/LUTs/" + msn[self.mission] + "/" + cal + "/OPER/" + f,
                         localpath=outputdir, timeout=self.timeout,
@@ -305,7 +305,7 @@ class lut_utils:
             outputdir = os.path.join(self.dirs['var'], msn[self.mission], cal, 'EVAL')
             listFile = os.path.join(outputdir, "index.html")
 
-            status = ProcUtils.httpdl(
+            urlConn, status = ProcUtils.httpdl(
                 self.data_site, "/Ancillary/LUTs/" + msn[self.mission] + "/" + cal + "/EVAL",
                 localpath=outputdir, outputfilename="index.html",
                 timeout=self.timeout, reuseConn=True,
@@ -319,7 +319,7 @@ class lut_utils:
 
             for f in evallist:
                 if not os.path.exists(os.path.join(outputdir, f)):
-                    status = ProcUtils.httpdl(
+                    urlConn, status = ProcUtils.httpdl(
                         self.data_site,
                         "/Ancillary/LUTs/" + msn[self.mission] + "/" + cal + "/EVAL/" + f,
                         localpath=outputdir, timeout=self.timeout,
diff --git a/modules/JsonUtils.py b/modules/JsonUtils.py
index d4e7a76..e63dfab 100644
--- a/modules/JsonUtils.py
+++ b/modules/JsonUtils.py
@@ -213,13 +213,13 @@ class SessionUtils:
         try:
             parts = urlsplit(url)
             outputdir = os.path.dirname(filepath)
-            status = httpdl(parts.netloc, parts.path,
-                            localpath=outputdir, timeout=self.timeout,
-                            reuseConn=True, urlConn=self.session,
-                            verbose=self.verbose)
+            self.session, status = httpdl(parts.netloc, parts.path,
+                                          localpath=outputdir, timeout=self.timeout,
+                                          reuseConn=True, urlConn=self.session,
+                                          verbose=self.verbose)
             if status:
                 self.status = 1
-                print('Error downloading {}.format(filepath)')
+                print('Error downloading {}'.format(filepath))
         except Exception as e:
             self.status = 1
             print('Exception: {:}'.format(e))
