Correct std::io::Write usage in client, update CHANGELOG

This commit is contained in:
David Bürgin 2020-04-07 14:35:55 +02:00
parent 3aa1a0bff0
commit 65eeae374c
2 changed files with 20 additions and 6 deletions

View file

@ -1,5 +1,11 @@
# SpamAssassin Milter changelog
## next (unreleased)
* Use `Write::write_all` instead of `Write::write` in `spamc` client, in order
to ensure buffers are written in their entirety.
* Do not include `.gitignore` file in published crate.
## 0.1.0 (2020-02-23)
Initial release.

View file

@ -130,7 +130,8 @@ impl Client {
pub fn send_envelope_sender(&mut self) -> Result<()> {
let buf = format!("X-Envelope-From: {}\r\n", self.sender);
self.bytes += self.process.writer().write(buf.as_bytes())?;
self.process.writer().write_all(buf.as_bytes())?;
self.bytes += buf.len();
Ok(())
}
@ -138,7 +139,8 @@ impl Client {
pub fn send_envelope_recipients(&mut self) -> Result<()> {
let buf = format!("X-Envelope-To: {}\r\n", self.recipients.join(",\r\n\t"));
self.bytes += self.process.writer().write(buf.as_bytes())?;
self.process.writer().write_all(buf.as_bytes())?;
self.bytes += buf.len();
Ok(())
}
@ -168,7 +170,8 @@ impl Client {
self.sender
);
self.bytes += self.process.writer().write(buf.as_bytes())?;
self.process.writer().write_all(buf.as_bytes())?;
self.bytes += buf.len();
Ok(())
}
@ -186,19 +189,24 @@ impl Client {
self.headers.insert_if_absent(name, value);
}
self.bytes += self.process.writer().write(buf.as_bytes())?;
self.process.writer().write_all(buf.as_bytes())?;
self.bytes += buf.len();
Ok(())
}
pub fn send_eoh(&mut self) -> Result<()> {
self.bytes += self.process.writer().write(b"\r\n")?;
let eoh = b"\r\n";
self.process.writer().write_all(eoh)?;
self.bytes += eoh.len();
Ok(())
}
pub fn send_body_chunk(&mut self, bytes: &[u8]) -> Result<()> {
self.bytes += self.process.writer().write(bytes)?;
self.process.writer().write_all(bytes)?;
self.bytes += bytes.len();
Ok(())
}