diff --git a/apps/nyssa/app/server/template_ext.b b/apps/nyssa/app/server/template_ext.b index bcc52ced..a48107fa 100644 --- a/apps/nyssa/app/server/template_ext.b +++ b/apps/nyssa/app/server/template_ext.b @@ -8,28 +8,28 @@ var md = markdown({ def template_ext() { return { - plus_one: | t | { + plus_one: @( t ) { return t + 1 }, - format_number: | t | { + format_number: @( t ) { return util.format_number(t) }, - strip_line: | t | { + strip_line: @( t ) { return t.replace('\n', '\\n') }, - sort_name: | t | { + sort_name: @( t ) { return t == 'name' }, - sort_download: | t | { + sort_download: @( t ) { return t == 'downloads' }, - sort_created: | t | { + sort_created: @( t ) { return t == 'created_at' }, - br: | t | { + br: @( t ) { return t.replace('\n', '
') }, - draw: | t | { + draw: @( t ) { try { return md.render(t) } catch Exception e { @@ -38,13 +38,13 @@ def template_ext() { return t } }, - can_revert: | versions | { + can_revert: @( versions ) { return versions.length() > 1 }, - no_ext: | t | { + no_ext: @( t ) { return t.split('.')[0] }, - file_title: | t | { + file_title: @( t ) { var x = t.split('.')[0].replace('-', ' ') return x[0].upper() + x[1,] }, diff --git a/apps/nyssa/public/css/style.css b/apps/nyssa/public/css/style.css index cb3b55b7..c6cf9bde 100644 --- a/apps/nyssa/public/css/style.css +++ b/apps/nyssa/public/css/style.css @@ -280,6 +280,7 @@ pre.has-icon .icon { border-color: #ffe08a; color: #946c00; background-color: #fffaeb; + padding: 0.05em 1.5em; } .content.doc blockquote strong { diff --git a/apps/nyssa/templates/account.html b/apps/nyssa/templates/account.html index 0a33b799..cb223b44 100644 --- a/apps/nyssa/templates/account.html +++ b/apps/nyssa/templates/account.html @@ -12,6 +12,7 @@
Log Out + Change Password
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() } } }