diff --git a/libs/html/format.b b/libs/html/format.b
index 0444884c..a4b409d6 100644
--- a/libs/html/format.b
+++ b/libs/html/format.b
@@ -19,7 +19,7 @@ def unquote(str) {
}
def format(nodes, options) {
- return iters.map(nodes, | node | {
+ return iters.map(nodes, @( node ) {
var type = node.type
var output_node = type == 'element' ? {
type,
@@ -38,7 +38,7 @@ def format(nodes, options) {
}
def format_attributes(attributes) {
- return iters.map(attributes, | attribute | {
+ return iters.map(attributes, @( attribute ) {
var parts = split_head(attribute.trim(), '=')
var name = parts[0]
var value
diff --git a/libs/html/html.b b/libs/html/html.b
index fd63ab36..dfc8e474 100644
--- a/libs/html/html.b
+++ b/libs/html/html.b
@@ -3,7 +3,7 @@
import iters
def format_attributes(attributes) {
- return iters.reduce(attributes, | attrs, attribute | {
+ return iters.reduce(attributes, @( attrs, attribute ) {
if (attribute.value == nil) {
return '${attrs} ${attribute.name}'
}
diff --git a/packages/ssl/ssl/server.b b/packages/ssl/ssl/server.b
index 8317a27d..f081e70c 100644
--- a/packages/ssl/ssl/server.b
+++ b/packages/ssl/ssl/server.b
@@ -216,8 +216,11 @@ class TLSServer {
}
_process_received(message, client) {
+ if !message or !client or !client.is_connected return
+
var request = HttpRequest(),
response = HttpResponse()
+
if !request.parse(message, client)
response.status = status.BAD_REQUEST
@@ -229,7 +232,7 @@ class TLSServer {
if response.status == status.OK {
# call the received listeners on the request object.
- iters.each(self._received_listeners, | fn, _ | {
+ iters.each(self._received_listeners, @( fn, _ ) {
fn(request, response)
})
@@ -256,11 +259,13 @@ class TLSServer {
'${status.map.get(response.status, 'UNKNOWN')}\r\n').to_bytes()
feedback = hdrv + feedback
hdrv.dispose()
-
- client.send(feedback)
+
+ if client.is_connected {
+ client.send(feedback)
+ }
# call the reply listeners.
- iters.each(self._sent_listeners, | fn | {
+ iters.each(self._sent_listeners, @( fn ) {
fn(response)
})
@@ -286,39 +291,40 @@ class TLSServer {
self.socket.listen()
self._is_listening = true
- while self._is_listening {
- var client = self.socket.accept()
+ var client
- # call the connect listeners.
- iters.each(self._connect_listeners, | fn, _ | {
- fn(client)
- })
+ while self._is_listening {
try {
- if is_number(self.read_timeout)
- client.set_option(so.SO_RCVTIMEO, self.read_timeout)
- if is_number(self.write_timeout)
- client.set_option(so.SO_SNDTIMEO, self.write_timeout)
-
- var data = client.receive()
+ client = self.socket.accept()
+
+ # call the connect listeners.
+ iters.each(self._connect_listeners, @(fn, _) {
+ fn(client)
+ })
- if data {
- data = to_string(data)
- self._process_received(data, client)
+ if client.is_connected {
+ if is_number(self.read_timeout)
+ client.set_option(so.SO_RCVTIMEO, self.read_timeout)
+ if is_number(self.write_timeout)
+ client.set_option(so.SO_SNDTIMEO, self.write_timeout)
}
+
+ self._process_received(client.receive(), client)
} catch Exception e {
# call the error listeners.
- iters.each(self._error_listeners, | fn, _ | {
+ iters.each(self._error_listeners, @(fn, _) {
fn(e, client)
})
} finally {
var client_info = client.info()
- client.close()
# call the disconnect listeners.
- iters.each(self._disconnect_listeners, | fn, _ | {
+ iters.each(self._disconnect_listeners, @(fn, _) {
fn(client_info)
})
+
+ client.close()
}
}
}