@@ -157,24 +157,24 @@
             return run("yelp %s" % path)
     return browser("http://fossil.include-once.org/streamtuner2/doc/tip/help/html/index.html")
 
 # Invokes player/recorder for stream url and format
 def run_fmt_url(row={}, audioformat="audio/mpeg", source="pls", assoc={}, append=None, cmd=None, add_default=True):
-    # look for specific "audio/type" or "urn:service:…" resolvers
+    # look for specific "audio/type"
     if audioformat in handler:
-        handler[audioformat](row, audioformat, source, assoc)
+        return handler[audioformat](row, audioformat, source, assoc)
+    # or "urn:service:…" resolvers (though this is usally done by genericchannel.row() already)
     elif row.get("url", "").startswith("urn:"):
-        row = resolve_urn(row);
-    else:
-        # use default handler for mime type
-        if not cmd:
-            cmd = mime_app(audioformat, assoc)
-        # replace %u, %url or $title placeholders
-        cmd = interpol(cmd, source, row, add_default=add_default)
-        if append:
-            cmd = re.sub('(["\']?\s*)$', " " + append + "\\1", cmd)
-        run(cmd)
+        row = resolve_urn(row) or row
+    # use default handler for mime type
+    if not cmd:
+        cmd = mime_app(audioformat, assoc)
+    # replace %u, %url or $title placeholders
+    cmd = interpol(cmd, source, row, add_default=add_default)
+    if append:
+        cmd = re.sub('(["\']?\s*)$', " " + append + "\\1", cmd)
+    run(cmd)
 
 # Start web browser
 def browser(url):
     run_fmt_url({"url": url, "homepage": url}, "url/http", "srv", conf.play)