nx_fetch_status_live_gate_t252.nx source
↩ module page · 19 lines · 1393 B
1// Live transport witness: consume raw native HTTPS bytes through the shared status boundary.
2// Caller chooses URL and observation buffer; this gate does not expose response cookies or body.
3import "nx_https_fetch_lib.nx"
4import "nx_fetch_any.nx"
5func hsl_size(s:*u8)->i64{var i:i64=0;var n:i64=0;if s[0]==0{return -1};while s[i]!=0{let d:i64=(s[i] as i64)-48;if d<0||d>9{return -1};if n>(9223372036854775807-d)/10{return -1};n=n*10+d;i=i+1};return n}
6func main(argc:i64,argv:*i64)->i64{
7 if argc!=3{return 2};let cap:i64=hsl_size(argv[2] as *u8);if cap<=0{return 2}
8 let store:i64=hf_store_load();if store<=0{return 3}
9 let out:*u8=sys_mmap_try(cap);if (out as i64)==0{return 4}
10 // Raw observation isolates status grammar; default decoded fetch failed HF_DEC_INFLATE in job1789314202.
11 let n:i64=hf_fetch_mode(store,argv[1] as *u8,0,0,out,cap,0)
12 if n<=0{fa_puts("LIVE-STATUS fetch_failed=");fa_putn(n);fa_puts("\n");sys_munmap_direct(out,cap);return 5}
13 let code:i64=fa_status(out,n);let shared:i64=nx_http_resp_status_code(out,n)
14 if code<=0||shared!=code{sys_munmap_direct(out,cap);return 6}
15 let end:i64=nx_http_resp_find_crlf(out,n,0)
16 fa_puts("LIVE-STATUS exact_line=");sys_write(1,out,end);fa_puts("\nstatus=");fa_putn(code);fa_puts(" received_bytes=");fa_putn(n);fa_puts(" buffer_capacity=");fa_putn(cap);fa_puts("\n")
17 sys_munmap_direct(out,cap)
18 if code!=200{return 7};return 0
19}