def update_routing_table(self):
<EOL>existing_routers = list(self.routing_table.routers)<EOL>has_tried_initial_routers = False<EOL>if self.missing_writer:<EOL><INDENT>has_tried_initial_routers = True<EOL>if self.update_routing_table_from(self.initial_address):<EOL><INDENT>return<EOL><DEDENT><DEDENT>if self.update_routing_table_from(*existing_routers):<EOL><INDENT>return<EOL><DEDENT>if not has_tried_initial_routers and self.initial_address not in existing_routers:<EOL><INDENT>if self.update_routing_table_from(self.initial_address):<EOL><INDENT>return<EOL><DEDENT><DEDENT>raise ServiceUnavailable("<STR_LIT>")<EOL>
Update the routing table from the first router able to provide
        valid routing information.