From 79d9314ba61472c98f8e64c6e68a1cfd4c75dc76 Mon Sep 17 00:00:00 2001 From: Stas Kelvich Date: Thu, 15 Jul 2021 16:17:08 +0300 Subject: [PATCH] terminate socket explicitly --- zenith_utils/src/postgres_backend.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/zenith_utils/src/postgres_backend.rs b/zenith_utils/src/postgres_backend.rs index 11c4b73d25..8c54b31e1e 100644 --- a/zenith_utils/src/postgres_backend.rs +++ b/zenith_utils/src/postgres_backend.rs @@ -11,6 +11,7 @@ use log::*; use rand::Rng; use std::io; use std::io::{BufReader, Write}; +use std::net::Shutdown; use std::net::TcpStream; pub trait Handler { @@ -140,7 +141,14 @@ impl PostgresBackend { self.flush() } + // wrapper for run_internal() that shuts down socket when we are done pub fn run(&mut self, handler: &mut impl Handler) -> Result<()> { + let ret = self.run_internal(handler); + let _res = self.stream_out.shutdown(Shutdown::Both); + ret + } + + fn run_internal(&mut self, handler: &mut impl Handler) -> Result<()> { let peer_addr = self.stream_out.peer_addr()?; info!("postgres backend to {:?} started", peer_addr); let mut unnamed_query_string = Bytes::new();