diff --git a/basis/farkup/farkup.factor b/basis/farkup/farkup.factor
index 0ac0e7a7cf..91863490b8 100644
--- a/basis/farkup/farkup.factor
+++ b/basis/farkup/farkup.factor
@@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays combinators html.elements io
io.streams.string kernel math memoize namespaces peg peg.ebnf
-prettyprint sequences sequences.deep strings xml.entities
+sequences sequences.deep strings xml.entities
vectors splitting xmode.code2html urls ;
IN: farkup
diff --git a/basis/furnace/chloe-tags/chloe-tags.factor b/basis/furnace/chloe-tags/chloe-tags.factor
index faa74d1a16..0cd1d6bd38 100644
--- a/basis/furnace/chloe-tags/chloe-tags.factor
+++ b/basis/furnace/chloe-tags/chloe-tags.factor
@@ -42,7 +42,7 @@ IN: furnace.chloe-tags
: compile-a-url ( tag -- )
{
- [ "href" required-attr compile-attr ]
+ [ "href" optional-attr compile-attr ]
[ "rest" optional-attr compile-attr ]
[ "query" optional-attr compile-attr ]
[ "value" optional-attr compile-attr ]
diff --git a/basis/http/http.factor b/basis/http/http.factor
index 0cc228c73b..cfc205dbb5 100755
--- a/basis/http/http.factor
+++ b/basis/http/http.factor
@@ -3,15 +3,13 @@
USING: accessors kernel combinators math namespaces make
assocs sequences splitting sorting sets debugger
strings vectors hashtables quotations arrays byte-arrays
-math.parser calendar calendar.format present
+math.parser calendar calendar.format present urls logging
io io.encodings io.encodings.iana io.encodings.binary
io.encodings.8-bit
unicode.case unicode.categories qualified
-urls
-
http.parsers ;
EXCLUDE: fry => , ;
@@ -98,6 +96,8 @@ TUPLE: cookie name value version comment path domain expires max-age http-only s
drop
] { } make ;
+\ parse-cookie DEBUG add-input-logging
+
: check-cookie-string ( string -- string' )
dup "=;'\"\r\n" intersect empty?
[ "Bad cookie name or value" throw ] unless ;
diff --git a/basis/http/parsers/parsers.factor b/basis/http/parsers/parsers.factor
index 8e8e7358d1..ce8257dec5 100644
--- a/basis/http/parsers/parsers.factor
+++ b/basis/http/parsers/parsers.factor
@@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license.
USING: combinators.short-circuit math math.order math.parser
kernel sequences sequences.deep peg peg.parsers assocs arrays
-hashtables strings unicode.case namespaces make ascii ;
+hashtables strings unicode.case namespaces make ascii logging ;
IN: http.parsers
: except ( quot -- parser )
@@ -61,6 +61,8 @@ PEG: parse-request-line ( string -- triple )
'space' ,
] seq* just ;
+\ parse-request-line DEBUG add-input-logging
+
: 'text' ( -- parser )
[ ctl? ] except ;
diff --git a/basis/io/servers/connection/connection.factor b/basis/io/servers/connection/connection.factor
index 0bea30faa3..bde4e518ac 100755
--- a/basis/io/servers/connection/connection.factor
+++ b/basis/io/servers/connection/connection.factor
@@ -78,6 +78,8 @@ M: threaded-server handle-client* handler>> call ;
[ timeout>> timeouts ] [ handle-client* ] bi
] with-stream ;
+\ handle-client ERROR add-error-logging
+
: thread-name ( server-name addrspec -- string )
unparse-short " connection from " swap 3append ;
diff --git a/basis/io/unix/sockets/secure/secure.factor b/basis/io/unix/sockets/secure/secure.factor
index a8adedf25a..649c68673f 100755
--- a/basis/io/unix/sockets/secure/secure.factor
+++ b/basis/io/unix/sockets/secure/secure.factor
@@ -27,8 +27,10 @@ M: ssl-handle handle-fd file>> handle-fd ;
{
{ SSL_ERROR_NONE [ 2drop f ] }
{ SSL_ERROR_WANT_READ [ 2drop +input+ ] }
+ { SSL_ERROR_WANT_ACCEPT [ 2drop +input+ ] }
{ SSL_ERROR_WANT_WRITE [ 2drop +output+ ] }
{ SSL_ERROR_SYSCALL [ syscall-error ] }
+ { SSL_ERROR_ZERO_RETURN [ (ssl-error) ] }
{ SSL_ERROR_SSL [ (ssl-error) ] }
} case ;
diff --git a/extra/webapps/planet/planet-common.xml b/extra/webapps/planet/planet-common.xml
index f4e390056a..486d5cc1ed 100644
--- a/extra/webapps/planet/planet-common.xml
+++ b/extra/webapps/planet/planet-common.xml
@@ -5,7 +5,7 @@