http: fix recent changes; picoev: make compile
parent
e137fbb1ea
commit
0a6d709ce2
|
@ -19,7 +19,8 @@ fn hello_response() string {
|
||||||
return 'Hello, World!'
|
return 'Hello, World!'
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn callback(req picohttpparser.Request, res mut picohttpparser.Response) {
|
|
||||||
|
fn callback(req picohttpparser.Request, res mut picohttpparser.Response) {
|
||||||
if picohttpparser.cmpn(req.method, 'GET ', 4) {
|
if picohttpparser.cmpn(req.method, 'GET ', 4) {
|
||||||
if picohttpparser.cmp(req.path, '/t') {
|
if picohttpparser.cmp(req.path, '/t') {
|
||||||
res.http_ok().header_server().header_date().plain().body(hello_response())
|
res.http_ok().header_server().header_date().plain().body(hello_response())
|
||||||
|
|
|
@ -147,7 +147,7 @@ fn (req &Request) ssl_do(port int, method, host_name, path string) ?Response {
|
||||||
//println(h)
|
//println(h)
|
||||||
sb.write(chunk.after('\r\n'))
|
sb.write(chunk.after('\r\n'))
|
||||||
// TODO for some reason this can be missing from headers
|
// TODO for some reason this can be missing from headers
|
||||||
is_chunk_encoding = true //h.contains('chunked')
|
is_chunk_encoding = false //h.contains('chunked')
|
||||||
//println(sb.str())
|
//println(sb.str())
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -172,7 +172,7 @@ fn (req &Request) ssl_do(port int, method, host_name, path string) ?Response {
|
||||||
C.SSL_CTX_free(ctx)
|
C.SSL_CTX_free(ctx)
|
||||||
}
|
}
|
||||||
body:= sb.str()
|
body:= sb.str()
|
||||||
println(body)
|
//println(body)
|
||||||
return parse_response(h +'\r\n\r\n'+ body)
|
return parse_response(h +'\r\n\r\n'+ body)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ fn C.write() int
|
||||||
struct C.picoev_loop {}
|
struct C.picoev_loop {}
|
||||||
|
|
||||||
struct Picoev {
|
struct Picoev {
|
||||||
loop *C.picoev_loop
|
loop &C.picoev_loop
|
||||||
cb fn(req picohttpparser.Request, res mut picohttpparser.Response)
|
cb fn(req picohttpparser.Request, res mut picohttpparser.Response)
|
||||||
mut:
|
mut:
|
||||||
date byteptr
|
date byteptr
|
||||||
|
@ -73,14 +73,17 @@ mut:
|
||||||
oidx [1024]int
|
oidx [1024]int
|
||||||
}
|
}
|
||||||
|
|
||||||
fn picoev_del(*C.picoev_loop, int) int
|
fn C.picoev_del(&C.picoev_loop, int) int
|
||||||
fn picoev_set_timeout(*C.picoev_loop, int, int)
|
fn C.picoev_set_timeout(&C.picoev_loop, int, int)
|
||||||
fn picoev_add(*C.picoev_loop, int, int, int, *C.picoev_handler, voidptr) int
|
fn C.picoev_add(&C.picoev_loop, int, int, int, &C.picoev_handler, voidptr) int
|
||||||
fn picoev_init(int) int
|
fn C.picoev_init(int) int
|
||||||
fn picoev_create_loop(int) *C.picoev_loop
|
fn C.picoev_create_loop(int) &C.picoev_loop
|
||||||
fn picoev_loop_once(*C.picoev_loop, int) int
|
fn C.picoev_loop_once(&C.picoev_loop, int) int
|
||||||
fn picoev_destroy_loop(*C.picoev_loop) int
|
fn C.picoev_destroy_loop(&C.picoev_loop) int
|
||||||
fn picoev_deinit() int
|
fn C.picoev_deinit() int
|
||||||
|
fn C.phr_parse_request() int
|
||||||
|
fn C.phr_parse_request_path_pipeline() int
|
||||||
|
fn C.phr_parse_request_path() int
|
||||||
|
|
||||||
[inline]
|
[inline]
|
||||||
fn setup_sock(fd int) {
|
fn setup_sock(fd int) {
|
||||||
|
@ -94,7 +97,7 @@ fn setup_sock(fd int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
[inline]
|
[inline]
|
||||||
fn close_conn(loop *C.picoev_loop, fd int) {
|
fn close_conn(loop &C.picoev_loop, fd int) {
|
||||||
C.picoev_del(loop, fd)
|
C.picoev_del(loop, fd)
|
||||||
C.close(fd)
|
C.close(fd)
|
||||||
}
|
}
|
||||||
|
@ -109,8 +112,8 @@ fn mysubstr(s byteptr, from, len int) string {
|
||||||
return tos(s + from, len)
|
return tos(s + from, len)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn rw_callback(loop *C.picoev_loop, fd, events int, cb_arg voidptr) {
|
fn rw_callback(loop &C.picoev_loop, fd, events int, cb_arg voidptr) {
|
||||||
mut p := *Picoev(cb_arg)
|
mut p := &Picoev(cb_arg)
|
||||||
if (events & C.PICOEV_TIMEOUT) != 0 {
|
if (events & C.PICOEV_TIMEOUT) != 0 {
|
||||||
close_conn(loop, fd)
|
close_conn(loop, fd)
|
||||||
p.idx[fd] = 0
|
p.idx[fd] = 0
|
||||||
|
@ -126,8 +129,8 @@ fn rw_callback(loop *C.picoev_loop, fd, events int, cb_arg voidptr) {
|
||||||
p.idx[fd] = 0
|
p.idx[fd] = 0
|
||||||
return
|
return
|
||||||
} else if r == -1 {
|
} else if r == -1 {
|
||||||
if errno == C.EAGAIN || errno == C.EWOULDBLOCK {
|
if false { //errno == C.EAGAIN || errno == C.EWOULDBLOCK {
|
||||||
//
|
// TODO
|
||||||
} else {
|
} else {
|
||||||
close_conn(loop, fd)
|
close_conn(loop, fd)
|
||||||
p.idx[fd] = 0
|
p.idx[fd] = 0
|
||||||
|
@ -168,7 +171,7 @@ fn rw_callback(loop *C.picoev_loop, fd, events int, cb_arg voidptr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn accept_callback(loop *C.picoev_loop, fd, events int, cb_arg voidptr) {
|
fn accept_callback(loop &C.picoev_loop, fd, events int, cb_arg voidptr) {
|
||||||
newfd := C.accept(fd, 0, 0)
|
newfd := C.accept(fd, 0, 0)
|
||||||
if newfd != -1 {
|
if newfd != -1 {
|
||||||
setup_sock(newfd)
|
setup_sock(newfd)
|
||||||
|
|
|
@ -26,4 +26,3 @@ fn phr_parse_request_path() int
|
||||||
fn phr_parse_request_path_pipeline() int
|
fn phr_parse_request_path_pipeline() int
|
||||||
fn C.get_date() byteptr
|
fn C.get_date() byteptr
|
||||||
fn C.u64toa() int
|
fn C.u64toa() int
|
||||||
fn C.memcmp() int
|
|
||||||
|
|
|
@ -1,15 +1,18 @@
|
||||||
module picohttpparser
|
module picohttpparser
|
||||||
|
|
||||||
pub struct Request {
|
pub struct Request {
|
||||||
mut:
|
pub mut:
|
||||||
method string
|
method string
|
||||||
path string
|
path string
|
||||||
headers *C.phr_header_t
|
headers &C.phr_header_t
|
||||||
num_headers u64
|
num_headers u64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[inline]
|
[inline]
|
||||||
pub fn (mut r Request) parse_request(s string, headers *C.phr_header_t, max_headers int) int {
|
pub fn (mut r Request) parse_request(s string, headers &C.phr_header_t, max_headers int) int {
|
||||||
method_len := u64(0)
|
method_len := u64(0)
|
||||||
path_len := u64(0)
|
path_len := u64(0)
|
||||||
minor_version := 0
|
minor_version := 0
|
||||||
|
|
|
@ -5,7 +5,7 @@ pub struct Response {
|
||||||
pub:
|
pub:
|
||||||
date byteptr
|
date byteptr
|
||||||
buf_start byteptr
|
buf_start byteptr
|
||||||
mut:
|
pub mut:
|
||||||
buf byteptr
|
buf byteptr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ Option ${dec_fn_name}(cJSON* root) {
|
||||||
if (!root) {
|
if (!root) {
|
||||||
const char *error_ptr = cJSON_GetErrorPtr();
|
const char *error_ptr = cJSON_GetErrorPtr();
|
||||||
if (error_ptr != NULL) {
|
if (error_ptr != NULL) {
|
||||||
fprintf(stderr, "Error in decode() for $styp error_ptr=: %%s\\n", error_ptr);
|
// fprintf(stderr, "Error in decode() for $styp error_ptr=: %%s\\n", error_ptr);
|
||||||
// printf("\\nbad js=%%s\\n", js.str);
|
// printf("\\nbad js=%%s\\n", js.str);
|
||||||
return v_error(tos2(error_ptr));
|
return v_error(tos2(error_ptr));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue