Odd crash
Posted: Tue Sep 29, 2009 5:22 am
				
				I have been messing with some code to respond to simple HTTP requests and have run into a weird bug. The following code results in a crash with this error:
 
I test this by running: 
The while loop commented out at the bottom will run fine for me. So all the code should be ok except for the loop where I manage the connection. Have I done something weird there, or is this a bug in newlisp?
			*** glibc detected *** /usr/bin/newlisp: double free or corruption (fasttop): 0x
Code: Select all
#!/usr/bin/newlisp
(constant 'max-bytes 1024)
(define (error num) 
    (format "Error: %d" num))
(define (process-request request)
    (set 'request (parse request " "))
    (case (first request)
        ("GET"  (get-request (request 1)))
        ("HEAD" (create-head (request 1)))
        (true   (error 501))))
(define (get-request item)
    (set 'item (replace "../" item ""))
    (if (ends-with item {\.css|\.html} 1) (send-file (1 item))
        (string "file not allowed\n")))
(define (send-file filename)
    (if (file? filename) (read-file filename)
        (error 404)))
(define (create-head item)
    (string "head"))
;
; PROGRAM START
;
(if (not (setf listen (net-listen 8080)))
    (print (net-error)))
(while (not (net-error))
    (setf connection (net-accept listen))
    (net-receive connection message max-bytes)
    (net-send connection (process-request message))
    (close connection))
;(while true
;    (print (process-request "GET /test.html")))
(exit)
Code: Select all
echo "GET /test.html" | nc localhost 8080