;;; Scratchy gopher server
;;
-;; Requires Chicken 5.0.0.
+;; Requires Chicken 5
;;
;;; Imports
-(import (chicken tcp)
+(import tcp6
(chicken port)
(chicken io)
(chicken string)
;;; Global constants
-(define scratchy-version "1.0.1")
+(define scratchy-version "1.2.1")
(define scratchy-footer
(conc "\n"
(define (run-server config)
(set-buffering-mode! (current-output-port) #:line)
- (let ((listener (tcp-listen (config-port config))))
+ (let ((listener (tcp-listen (config-port config) 10 "::")))
(print "Gopher server listening on port " (config-port config) " ...")
(drop-privs config)
(server-loop listener config))
(selector (car selector-list))
(arguments (cdr selector-list)))
(if (string-contains selector "|")
- (let ((l (string-split selector "|")))
+ (let ((l (string-split selector "|" #t)))
(serve-script (car l) (cdr l) config))
(case (infer-selector-type selector)
((1) (serve-directory-file selector config))
- ((7) (let ((l (string-split selector "?")))
+ ((7) (let ((l (string-split selector "?" #t)))
(serve-script (car l) arguments config)))
((0) (serve-text-file selector config))
((h) (serve-url selector config))