File tree Expand file tree Collapse file tree 1 file changed +10
-21
lines changed
Expand file tree Collapse file tree 1 file changed +10
-21
lines changed Original file line number Diff line number Diff line change @@ -206,32 +206,21 @@ def _find_service(expected_protocols,
206206 services_file = '/etc/services' ):
207207 if not os .path .exists (services_file ):
208208 return None
209- services_found = dict ()
209+ expected_protocols = set (expected_protocols )
210+ services = collections .defaultdict (set )
210211 with open (services_file , 'r' ) as f :
211- for line in f :
212- line = line .strip ()
212+ for line in map (str .strip , f ):
213213 if line .startswith ('#' ):
214- # Skip comment line.
215214 continue
216215 tokens = line .split ()
217- if len (tokens ) < 2 :
218- continue
219- if '/' not in tokens [1 ]:
220- continue
221- try :
222- _ , entry_protocol = tokens [1 ].split ('/' )
223- except :
216+ if len (tokens ) < 2 or '/' not in tokens [1 ]:
224217 continue
225- entry_name = tokens [0 ]
226- if entry_name not in services_found :
227- services_found [entry_name ] = [entry_protocol ]
228- else :
229- services_found [entry_name ].append (entry_protocol )
230- for protocol in expected_protocols :
231- if protocol not in services_found [entry_name ]:
232- break
233- else :
234- return entry_name
218+ service_name = tokens [0 ]
219+ _ , service_protocol = tokens [1 ].split ('/' , maxsplit = 1 )
220+ service_protocols = services [service_name ]
221+ service_protocols .add (service_protocol )
222+ if service_protocols <= expected_protocols :
223+ return service_name
235224 return None
236225
237226@contextlib .contextmanager
You can’t perform that action at this time.
0 commit comments