Skip to content

feat(http): put --http and the plugin fully on the thinclient#40

Merged
0xeb merged 1 commit into
mainfrom
feat/http-fully-on-thinclient
Jun 23, 2026
Merged

feat(http): put --http and the plugin fully on the thinclient#40
0xeb merged 1 commit into
mainfrom
feat/http-fully-on-thinclient

Conversation

@0xeb

@0xeb 0xeb commented Jun 23, 2026

Copy link
Copy Markdown
Member

Completes idasql's HTTP convergence onto xsql::thinclient::http_query_server (libxsql v1.0.10).

  • CLI --http: replaces the hand-rolled run_http_mode (its own queue + manual routes) with IDAHTTPServer + statement_executor (use_queue=true; run_until_stopped on the main thread for Hex-Rays affinity). Old body kept as run_http_mode_legacy (unused; cleanup follow-up).
  • Plugin: single-statement executor that marshals each statement to IDA's main thread via execute_sync (query_request_t); use_queue=false + serialize_requests=true.
  • IDAHTTPServer sets serialize_requests = !use_queue.
  • Pin libxsql v1.0.8 → v1.0.10 (serialize_requests + stop() concurrency fix).

Tested live (--http)

status, auth 401, ?continue_on_error=1, ?format=tsv, graceful /shutdown exits 0 (no more double-join abort). Plugin compile-verified (in-process GUI not testable headless).

- CLI --http: replace the hand-rolled run_http_mode (own queue + manual routes)
  with IDAHTTPServer + statement_executor (use_queue=true; run_until_stopped on
  the main thread for Hex-Rays affinity). Old body retained as
  run_http_mode_legacy (unused; cleanup follow-up).
- Plugin: replace the legacy whole-script query_fn with a single-statement
  executor that marshals each statement to IDA's main thread via execute_sync
  (query_request_t); non-queue + serialize_requests keeps requests serialized.
- IDAHTTPServer sets serialize_requests = !use_queue for non-queue servers.
- Pin libxsql v1.0.8 -> v1.0.10 (serialize_requests + stop() concurrency fix).

All idasql HTTP paths now run through libxsql's thinclient + run_script:
continue_on_error/include_sql/format work everywhere.

Tested live (--http): status, auth 401, continue_on_error, format=tsv, and
graceful /shutdown (exits 0). Plugin compile-verified (GUI not testable headless).
@0xeb
0xeb merged commit fa6b19b into main Jun 23, 2026
6 checks passed
@0xeb
0xeb deleted the feat/http-fully-on-thinclient branch June 23, 2026 21:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant