bug-mit-scheme
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #62581] write-http-response procedure is broken


From: Sam Lee
Subject: [bug #62581] write-http-response procedure is broken
Date: Sat, 4 Jun 2022 02:07:47 -0400 (EDT)

URL:
  <https://savannah.gnu.org/bugs/?62581>

                 Summary: write-http-response procedure is broken
                 Project: MIT/GNU Scheme
               Submitter: samlee
               Submitted: Sat 04 Jun 2022 06:07:45 AM UTC
                Category: runtime
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Incorrect behavior
                  Status: None
                 Privacy: Public
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
                Keywords: 


    _______________________________________________________

Follow-up Comments:


-------------------------------------------------------
Date: Sat 04 Jun 2022 06:07:45 AM UTC By: Sam Lee <samlee>
(let* ((socket (open-tcp-server-socket 8000))
       (port (tcp-server-connection-accept socket #t #f))
       (response (make-http-response (make-http-version 1 1) 200 "OK" '()
                                     (string->utf8 "Hello!"))))
  (write-http-response response port))

When the code above is run, and I connect to localhost:8000 using a web
browser, `write-http-response` will fail with this error:

;The object #[textual-i/o-port 12 for channel: #[channel 13]], passed as an
argument to #[compiled-procedure 14 ("binary-port" #x3) #x1c #x29ce984], is
not the correct type.

So, I changed `tcp-server-connection-accept` to
`tcp-server-binary-connection-accept`:

(let* ((socket (open-tcp-server-socket 8000))
       (port (tcp-server-binary-connection-accept socket #t #f))
       (response (make-http-response (make-http-version 1 1) 200 "OK" '()
                                     (string->utf8 "Hello!"))))
  (write-http-response response port))

When I connect to localhost:8000, there will also be an error:

;The object #[binary-i/o-port 12], passed as an argument to write-char, is not
the correct type.

This error is caused by `(newline port)` in `write-http-response` [1]. The
`newline` procedure can only accept a textual port, not a binary port. A
similar problem exists in the `write-http-request` procedure, so you may want
to fix that too.


[1]:
https://git.savannah.gnu.org/cgit/mit-scheme.git/tree/src/runtime/http-io.scm?h=release-11.2#n191







    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?62581>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]