Skip to content

Commit 6e89eef

Browse files
committed
fix: IT WORKS
1 parent 97ef5c8 commit 6e89eef

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

src/lsquic/lsquic.lisp

+7-6
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@
2828
(weird-pointers:save (pop-stream-ctx (weird-pointers:restore stream-ctx))))))
2929

3030
(defcallback stream-readf :unsigned-int ((stream-ctx :pointer) (buf :pointer) (buf-len :unsigned-int) (fin :int))
31-
(format t "in stream-readf: ~A" (cffi:foreign-string-to-lisp buf))
31+
(format t "in stream-readf: ~A~%" (cffi:foreign-string-to-lisp buf))
3232
(force-output)
33-
-1)
33+
buf-len)
3434

3535
(defcallback cb-on-read :void ((stream :pointer) (stream-ctx :pointer))
3636
(let ((ctx (weird-pointers:restore stream-ctx))
@@ -39,16 +39,19 @@
3939
(stream-close stream))
4040
(when (eq bytes-read 0)
4141
(stream-shutdown stream 0)
42-
(stream-wantread stream 0))))
42+
(stream-wantread stream 0))
43+
bytes-read))
4344

4445
(defparameter send-headers nil)
4546

4647
(defcallback cb-on-write :void ((stream :pointer) (stream-ctx :pointer))
4748
(let* ((ctx (weird-pointers:restore stream-ctx))
4849
(packed-headers (lsxpack-headers (request ctx)))
49-
(eos (if (body (request ctx)) 0 1)))
50+
(eos 0))
5051
(unless send-headers
5152
(stream-send-headers stream packed-headers eos)
53+
(stream-shutdown stream 1)
54+
(stream-wantread stream 1)
5255
(setf send-headers t))))
5356

5457
(defcallback cb-on-close :void ((stream :pointer) (stream-ctx :pointer)))
@@ -61,8 +64,6 @@
6164

6265
(defcallback cb-packets-out :int ((packets-out-ctx :pointer) (specs :pointer) (count :int))
6366
(declare (ignore packets-out-ctx))
64-
(format t "cb-packets-out~%")
65-
(force-output)
6667
(let ((n 0))
6768
(loop while (< n count)
6869
do

src/lsquic/request.lisp

+11-8
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,26 @@
1414
(body :initarg :body :accessor body)))
1515

1616
(defun make-lsxpack-header (el header)
17-
(with-foreign-slots ((buf name-len name-offset val-len val-offset) el (:struct lsxpack-header))
17+
(with-foreign-slots ((buf flags name-len name-offset val-len val-offset) el (:struct lsxpack-header))
18+
(setf flags 0)
1819
(setf buf (foreign-string-alloc (format nil "~A~A" (name header) (value header))))
1920
(setf name-len (length (name header)))
2021
(setf name-offset 0)
2122
(setf val-len (length (value header)))
2223
(setf val-offset (length (name header)))))
2324

2425
(defmethod required-headers ((request request))
25-
(list
26-
(make-instance 'header :name ":method" :value (verb request))
27-
(make-instance 'header :name ":scheme" :value (scheme request))
28-
(make-instance 'header :name ":path" :value (path request))
29-
(make-instance 'header :name ":authority" :value (authority request))))
26+
(let ((hdrs (list
27+
(make-instance 'header :name ":method" :value (verb request))
28+
(make-instance 'header :name ":scheme" :value (scheme request))
29+
(make-instance 'header :name ":path" :value (path request))
30+
(make-instance 'header :name ":authority" :value (authority request)))))
31+
(if (body request)
32+
hdrs
33+
(append hdrs (list (make-instance 'header :name "connection" :value "close"))))))
3034

3135
(defmethod lsxpack-headers ((request request))
32-
(let* ((all-headers (nconc (required-headers request) (headers request)))
36+
(let* ((all-headers (append (required-headers request) (headers request)))
3337
(count-hdrs (length all-headers))
3438
(pheaders (cffi:foreign-alloc '(:struct lsxpack-header) :count count-hdrs))
3539
(http-headers (cffi:foreign-alloc '(:struct http-headers))))
@@ -41,5 +45,4 @@
4145
(with-foreign-slots ((count headers) http-headers (:struct http-headers))
4246
(setf count count-hdrs)
4347
(setf headers pheaders))
44-
4548
http-headers))

0 commit comments

Comments
 (0)