(self)
| 166 | pass |
| 167 | |
| 168 | def run(self): |
| 169 | port = BMConfigParser().getint('bitmessagesettings', 'apiport') |
| 170 | try: |
| 171 | from errno import WSAEADDRINUSE |
| 172 | except (ImportError, AttributeError): |
| 173 | errno.WSAEADDRINUSE = errno.EADDRINUSE |
| 174 | for attempt in range(50): |
| 175 | try: |
| 176 | if attempt > 0: |
| 177 | port = randint(32767, 65535) |
| 178 | se = StoppableXMLRPCServer((BMConfigParser().get('bitmessagesettings', 'apiinterface'), port), |
| 179 | MySimpleXMLRPCRequestHandler, True, True) |
| 180 | except socket.error as e: |
| 181 | if e.errno in (errno.EADDRINUSE, errno.WSAEADDRINUSE): |
| 182 | continue |
| 183 | else: |
| 184 | if attempt > 0: |
| 185 | BMConfigParser().set("bitmessagesettings", "apiport", str(port)) |
| 186 | BMConfigParser().save() |
| 187 | break |
| 188 | se.register_introspection_functions() |
| 189 | se.serve_forever() |
| 190 | |
| 191 | # This is a list of current connections (the thread pointers at least) |
| 192 | selfInitiatedConnections = {} |
no test coverage detected