|
14 | 14 | (body :initarg :body :accessor body)))
|
15 | 15 |
|
16 | 16 | (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) |
18 | 19 | (setf buf (foreign-string-alloc (format nil "~A~A" (name header) (value header))))
|
19 | 20 | (setf name-len (length (name header)))
|
20 | 21 | (setf name-offset 0)
|
21 | 22 | (setf val-len (length (value header)))
|
22 | 23 | (setf val-offset (length (name header)))))
|
23 | 24 |
|
24 | 25 | (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")))))) |
30 | 34 |
|
31 | 35 | (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))) |
33 | 37 | (count-hdrs (length all-headers))
|
34 | 38 | (pheaders (cffi:foreign-alloc '(:struct lsxpack-header) :count count-hdrs))
|
35 | 39 | (http-headers (cffi:foreign-alloc '(:struct http-headers))))
|
|
41 | 45 | (with-foreign-slots ((count headers) http-headers (:struct http-headers))
|
42 | 46 | (setf count count-hdrs)
|
43 | 47 | (setf headers pheaders))
|
44 |
| - |
45 | 48 | http-headers))
|
0 commit comments