code wiki / (root) / nx_fetch_status_live_gate_t252.nx

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}