Salome HOME
prevent from double session close
[modules/kernel.git] / bin / PortManager.py
index 8e7a31d63056a41b705050451153fff008522239..8791bfc94c897ecdcd31e557760517a8122c7f22 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -25,9 +25,9 @@ import os
 import sys
 
 try:
-  import cPickle as pickle
+  import cPickle as pickle #@UnusedImport
 except:
-  import pickle
+  import pickle #@Reimport
 
 import logging
 def createLogger():
@@ -71,7 +71,11 @@ def _getConfigurationFilename():
                                         suffix="PortManager",
                                         extension="cfg",
                                         hidden=True)
-  lock_file = portmanager_config + "-lock"
+  import tempfile
+  temp = tempfile.NamedTemporaryFile()
+  lock_file = os.path.join(os.path.dirname(temp.name), ".omniORB_PortManager.lock")
+  temp.close()
+
   return (portmanager_config, lock_file)
 #
 
@@ -84,7 +88,7 @@ def __isNetworkConnectionActiveOnPort(port):
   #        netstat options -l and -t are unavailable
   #        grep command is unavailable
   from subprocess import Popen, PIPE
-  (stdout, stderr) = Popen(['netstat','-an'], stdout=PIPE).communicate()
+  stdout, _ = Popen(['netstat','-an'], stdout=PIPE).communicate()
   import StringIO
   buf = StringIO.StringIO(stdout)
   ports = buf.readlines()
@@ -103,6 +107,7 @@ def getPort(preferedPort=None):
   logger.debug("GET PORT")
 
   config_file, lock_file = _getConfigurationFilename()
+  oldmask = os.umask(0)
   with open(lock_file, 'w') as lock:
     # acquire lock
     __acquire_lock(lock)
@@ -143,9 +148,11 @@ def getPort(preferedPort=None):
 
     # release lock
     __release_lock(lock)
+  #
 
-    logger.debug("get port: %s"%str(port))
-    return port
+  os.umask(oldmask)
+  logger.debug("get port: %s"%str(port))
+  return port
 #
 
 def releasePort(port):