fix(smtp_server): updated line split logic, normalize all linebreaks to \r\n (#897)

Co-authored-by: Vishnu S <vishnu@zerodha.com>
This commit is contained in:
Vishnu Sudhakaran
2021-07-27 23:15:38 +01:00
committed by GitHub
co-authored by Vishnu S
parent 670ea65712
commit e8ba9ee427
+6 -5
View File
@@ -147,15 +147,16 @@ module Postal
# Client went away
eof = true
end
# Normalize all \r\n and \n to \r\n
buffers[io] = buffers[io].encode(buffers[io].encoding, universal_newline: true).encode(buffers[io].encoding, crlf_newline: true)
# We line buffer, so look to see if we have received a newline
# and keep doing so until all buffered lines have been processed.
while buffers[io].index("\n")
while buffers[io].index("\r\n")
# Extract the line
if buffers[io].index("\r\n")
line, buffers[io] = buffers[io].split("\r\n", 2)
else
line, buffers[io] = buffers[io].split("\n", 2)
end
# Send the received line to the client object for processing
result = client.handle(line)
# If the client object returned some data, write it back to the client