From b5965d05a200dc4eaa62de2ee379b631952be554 Mon Sep 17 00:00:00 2001 From: Erik O'Leary Date: Wed, 13 Nov 2013 13:20:45 -0600 Subject: [PATCH 1/2] Added timestamp to TIRCEvent --- lib/pure/irc.nim | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/pure/irc.nim b/lib/pure/irc.nim index 74ad7e26a9..ee85d9c691 100644 --- a/lib/pure/irc.nim +++ b/lib/pure/irc.nim @@ -98,6 +98,7 @@ type params*: seq[string] ## Parameters of the IRC message origin*: string ## The channel/user that this msg originated from raw*: string ## Raw IRC message + timestamp*: TTime ## UNIX epoch time the message was received proc send*(irc: PIRC, message: string, sendImmediately = false) = ## Sends ``message`` as a raw command. It adds ``\c\L`` for you. @@ -160,9 +161,10 @@ proc isNumber(s: string): bool = result = i == s.len and s.len > 0 proc parseMessage(msg: string): TIRCEvent = - result.typ = EvMsg - result.cmd = MUnknown - result.raw = msg + result.typ = EvMsg + result.cmd = MUnknown + result.raw = msg + result.timestamp = times.getTime() var i = 0 # Process the prefix if msg[i] == ':': From 1a6742e651f65ed2d2b2584b7c6c634a485b9cac Mon Sep 17 00:00:00 2001 From: Erik O'Leary Date: Fri, 15 Nov 2013 10:47:25 -0600 Subject: [PATCH 2/2] Fixed http header parsing issue If second half of http header line was empty, server would crash with EInvalidIndex https://gist.github.com/onionhammer/7487452 --- lib/pure/httpserver.nim | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pure/httpserver.nim b/lib/pure/httpserver.nim index 043e713a61..901fdc779d 100644 --- a/lib/pure/httpserver.nim +++ b/lib/pure/httpserver.nim @@ -401,8 +401,9 @@ proc nextAsync(s: PAsyncHTTPServer) = var value = "" i = header.parseUntil(key, ':') inc(i) # skip : - i += header.skipWhiteSpace(i) - i += header.parseUntil(value, {'\c', '\L'}, i) + if i < header.len: + i += header.skipWhiteSpace(i) + i += header.parseUntil(value, {'\c', '\L'}, i) s.headers[key] = value else: s.client.close()