Files
scryer-prolog/tests-pl/issue-http_open-hanging.pl
2026-04-12 19:29:39 -07:00

51 lines
1.2 KiB
Prolog

% Server
:- use_module(library(process)).
:- use_module(library(iso_ext)).
:- use_module(library(os)).
prolog_path(Prolog) :-
read(Body),
term_variables(Body, [Prolog]),
Body.
server_start([Process,Out]) :-
prolog_path(Prolog),
process_create(Prolog,
["tests-pl/issue-http_open-hanging_server", "-t", "server"],
[process(Process), stdout(pipe(Out))]).
server_wait_start([_Process, Out]) :-
get_char(Out, _C).
server_stop([Process,_Out]) :-
process_kill(Process).
% Client
:- use_module(library(charsio)).
:- use_module(library(http/http_open)).
send_request :-
Options = [
method('get'),
status_code(StatusCode),
request_headers([]),
headers(_)
],
http_open("http://localhost:8472", _Stream, Options),
write_term('received response with status code':StatusCode, []), nl.
main :-
setup_call_cleanup(
server_start(Server),
(
server_wait_start(Server),
send_request,
send_request,
send_request,
send_request,
send_request
),
server_stop(Server)
).
:- initialization(main).