From 949df9772613f4f8ea7a57bf0725c02d9833388c Mon Sep 17 00:00:00 2001 From: d11wtq Date: Sun, 8 Jun 2014 09:09:57 +0000 Subject: [PATCH] Fix issue with infinite recursion when service_names is empty Signed-off-by: Chris Corbyn --- fig/project.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/fig/project.py b/fig/project.py index 1703be688d..ac1477edc5 100644 --- a/fig/project.py +++ b/fig/project.py @@ -104,7 +104,10 @@ class Project(object): Raises NoSuchService if any of the named services do not exist. """ if service_names is None or len(service_names) == 0: - return [s for s in self.services if s.options['auto_start']] + return self.get_services( + service_names=[s.name for s in self.services if s.options['auto_start']], + include_links=include_links + ) else: unsorted = [self.get_service(name) for name in service_names] services = [s for s in self.services if s in unsorted] @@ -156,10 +159,19 @@ class Project(object): return l def _prepend_with_links(self, acc, service): - linked_services = self.get_services( - service_names=service.get_linked_names(), - include_links=True - ) + if service in acc: + return acc + + linked_names = service.get_linked_names() + + if len(linked_names) > 0: + linked_services = self.get_services( + service_names=linked_names, + include_links=True + ) + else: + linked_services = [] + linked_services.append(service) return acc + linked_services