Pārlūkot izejas kodu

Check for bad signal

Marc Abramowitz 10 gadi atpakaļ
vecāks
revīzija
9abc7caeb3
3 mainītis faili ar 7 papildinājumiem un 1 dzēšanām
  1. 4 1
      supervisor/rpcinterface.py
  2. 2 0
      supervisor/supervisorctl.py
  3. 1 0
      supervisor/xmlrpc.py

+ 4 - 1
supervisor/rpcinterface.py

@@ -484,7 +484,10 @@ class SupervisorNamespaceRPCInterface:
             group_name, process_name = split_namespec(name)
             return self.sendGroupSignal(group_name, signal=signal)
 
-        sig = signal_number(signal)
+        try:
+            sig = signal_number(signal)
+        except ValueError:
+            raise RPCError(Faults.BAD_SIGNAL, signal)
 
         if process.get_state() not in RUNNING_STATES:
            raise RPCError(Faults.NOT_RUNNING)

+ 2 - 0
supervisor/supervisorctl.py

@@ -745,6 +745,8 @@ class DefaultControllerPlugin(ControllerPluginBase):
         template = '%s: ERROR (%s)'
         if code == xmlrpc.Faults.BAD_NAME:
             return template % (name, 'no such process')
+        elif code == xmlrpc.Faults.BAD_SIGNAL:
+            return template % (name, fault_string)
         elif code == xmlrpc.Faults.NOT_RUNNING:
             return template % (name, 'not running')
         elif code == xmlrpc.Faults.SUCCESS:

+ 1 - 0
supervisor/xmlrpc.py

@@ -30,6 +30,7 @@ class Faults:
     SIGNATURE_UNSUPPORTED = 4
     SHUTDOWN_STATE = 6
     BAD_NAME = 10
+    BAD_SIGNAL = 11
     NO_FILE = 20
     NOT_EXECUTABLE = 21
     FAILED = 30