Ticket #2687: server.py.diff

File server.py.diff, 1.2 KB (added by Tristan Croll, 6 years ago)
  • src/bundles/rest_server/src/server.py

    diff --git a/src/bundles/rest_server/src/server.py b/src/bundles/rest_server/src/server.py
    index dce33ee..5b8ea06 100644
    a b class RESTServer(Task):  
    2323        super().__init__(*args, **kw)
    2424
    2525    SESSION_SAVE = False
    26    
     26
    2727    def take_snapshot(self, session, flags):
    2828        # For now, do not save anything in session.
    2929        # Should save port and auto-restart on session restore.
    class RESTHandler(BaseHTTPRequestHandler):  
    9595                    else:
    9696                        al.extend(vl)
    9797            self._run(args)
     98        elif r.path == "/stop":
     99            # Return the response *before* shutting down, otherwise everything hangs
     100            data = bytes('Shutting down ChimeraX REST server', 'utf-8')
     101            self._header(200, 'text/plain', len(data))
     102            self.wfile.write(data)
     103            from chimerax.core.commands import run
     104            session = self.server.chimerax_session
     105            session.ui.thread_safe(run, session, 'remotecontrol rest stop')
    98106        else:
    99107            # Serve up some static files for testing
    100108            import os.path