Skip to content

[BUG]: bt query hangs when URL pattern has no path component #137

@kevintraver

Description

@kevintraver

bt query -url hangs when the pattern has no path component (e.g., *://example.com instead of *://example.com/*).

Reproduction

# Hangs (no path component):
bt query -url '*://example.com'

# Works (has path):
bt query -url '*://example.com/*'

Root Cause

When the browser's tabs.query() API rejects an invalid pattern, the extension's error handler logs but never sends a response back to the mediator.

Code flow

  1. CLI calls api.query_tabs() which makes HTTP request to mediator
  2. Mediator calls remote_api.query_tabs() which sends command to extension
  3. transport.recv() blocks on self._in.read(4) waiting for response
  4. Extension calls browserTabs.query(query, queryTabsOnSuccess)
  5. FirefoxTabs.query() in background.js:70-74:
query(queryInfo, onSuccess) {
  this._browser.tabs.query(queryInfo).then(
    onSuccess,
    (error) => console.log(`Error executing queryTabs: ${error}`)  // ❌ No response sent!
  );
}

When the promise rejects, only console.log is called. No port.postMessage([]) is sent, so the mediator waits forever.

Suggested Fix

query(queryInfo, onSuccess) {
  this._browser.tabs.query(queryInfo).then(
    onSuccess,
    (error) => {
      console.log(`Error executing queryTabs: ${error}`);
      port.postMessage([]);  // Send empty response on error
    }
  );
}

Environment

  • brotab version: 1.4.2
  • Browser: Zen Browser (Firefox-based)
  • OS: macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions