v1.1.3
This commit is contained in:
parent
d37e3dc1da
commit
6798a91d8b
@ -1,6 +1,11 @@
|
|||||||
E-MailRelay Change Log
|
E-MailRelay Change Log
|
||||||
======================
|
======================
|
||||||
|
|
||||||
|
1.1.2 -> 1.1.3
|
||||||
|
--------------
|
||||||
|
* Fix for dangling reference bug, seen after "quit" command on Windows.
|
||||||
|
* Keeps authentication after a "rset" command.
|
||||||
|
|
||||||
1.1.1 -> 1.1.2
|
1.1.1 -> 1.1.2
|
||||||
--------------
|
--------------
|
||||||
* Earlier check for un-bindable ports on startup, and later fork()ing [bug-id 776972].
|
* Earlier check for un-bindable ports on startup, and later fork()ing [bug-id 776972].
|
||||||
|
2
configure
vendored
2
configure
vendored
@ -1459,7 +1459,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE=emailrelay
|
PACKAGE=emailrelay
|
||||||
VERSION=1.1.2
|
VERSION=1.1.3
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
@ -21,7 +21,7 @@ dnl Process this file with autoconf to produce a configure script.
|
|||||||
dnl
|
dnl
|
||||||
|
|
||||||
AC_INIT(src/gsmtp/gsmtp.h)
|
AC_INIT(src/gsmtp/gsmtp.h)
|
||||||
AM_INIT_AUTOMAKE(emailrelay,1.1.2)
|
AM_INIT_AUTOMAKE(emailrelay,1.1.3)
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
Summary: Simple e-mail message transfer agent using SMTP
|
Summary: Simple e-mail message transfer agent using SMTP
|
||||||
Name: emailrelay
|
Name: emailrelay
|
||||||
Version: 1.1.2
|
Version: 1.1.3
|
||||||
Release: 1
|
Release: 1
|
||||||
Copyright: GPL
|
Copyright: GPL
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
Source: http://emailrelay.sourceforge.net/.../emailrelay-src-1.1.2.tar.gz
|
Source: http://emailrelay.sourceforge.net/.../emailrelay-src-1.1.3.tar.gz
|
||||||
BuildRoot: /tmp/emailrelay-install
|
BuildRoot: /tmp/emailrelay-install
|
||||||
|
|
||||||
%define prefix /usr
|
%define prefix /usr
|
||||||
|
@ -52,6 +52,7 @@ GSmtp::AdminPeer::~AdminPeer()
|
|||||||
// only safe because AdminServer::dtor calls serverCleanup() -- otherwise
|
// only safe because AdminServer::dtor calls serverCleanup() -- otherwise
|
||||||
// the derived part of the server may already be destroyed
|
// the derived part of the server may already be destroyed
|
||||||
m_server.unregister( this ) ;
|
m_server.unregister( this ) ;
|
||||||
|
if( m_client.get() ) m_client->doneSignal().disconnect() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSmtp::AdminPeer::clientDone( std::string s )
|
void GSmtp::AdminPeer::clientDone( std::string s )
|
||||||
|
@ -51,6 +51,8 @@ G::Signal3<bool,unsigned long,std::string> & GSmtp::ProtocolMessageForward::stor
|
|||||||
|
|
||||||
GSmtp::ProtocolMessageForward::~ProtocolMessageForward()
|
GSmtp::ProtocolMessageForward::~ProtocolMessageForward()
|
||||||
{
|
{
|
||||||
|
m_pm.doneSignal().disconnect() ;
|
||||||
|
if( m_client.get() ) m_client->doneSignal().disconnect() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
G::Signal3<bool,unsigned long,std::string> & GSmtp::ProtocolMessageForward::doneSignal()
|
G::Signal3<bool,unsigned long,std::string> & GSmtp::ProtocolMessageForward::doneSignal()
|
||||||
|
@ -52,6 +52,7 @@ GSmtp::ProtocolMessageScanner::ProtocolMessageScanner( MessageStore & store ,
|
|||||||
|
|
||||||
void GSmtp::ProtocolMessageScanner::scannerInit()
|
void GSmtp::ProtocolMessageScanner::scannerInit()
|
||||||
{
|
{
|
||||||
|
storageDoneSignal().disconnect() ; // base-class signal
|
||||||
m_scanner_client <<=
|
m_scanner_client <<=
|
||||||
new ScannerClient(m_scanner_server,m_scanner_connection_timeout,m_scanner_response_timeout) ;
|
new ScannerClient(m_scanner_server,m_scanner_connection_timeout,m_scanner_response_timeout) ;
|
||||||
m_scanner_client->connectedSignal().connect( G::slot(*this,&ProtocolMessageScanner::connectDone) ) ;
|
m_scanner_client->connectedSignal().connect( G::slot(*this,&ProtocolMessageScanner::connectDone) ) ;
|
||||||
@ -60,6 +61,12 @@ void GSmtp::ProtocolMessageScanner::scannerInit()
|
|||||||
|
|
||||||
GSmtp::ProtocolMessageScanner::~ProtocolMessageScanner()
|
GSmtp::ProtocolMessageScanner::~ProtocolMessageScanner()
|
||||||
{
|
{
|
||||||
|
storageDoneSignal().disconnect() ; // base-class signal
|
||||||
|
if( m_scanner_client.get() )
|
||||||
|
{
|
||||||
|
m_scanner_client->connectedSignal().disconnect() ;
|
||||||
|
m_scanner_client->doneSignal().disconnect() ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
G::Signal3<bool,bool,std::string> & GSmtp::ProtocolMessageScanner::preparedSignal()
|
G::Signal3<bool,bool,std::string> & GSmtp::ProtocolMessageScanner::preparedSignal()
|
||||||
|
@ -141,7 +141,7 @@ void GSmtp::ServerProtocol::processDone( bool success , unsigned long , std::str
|
|||||||
|
|
||||||
void GSmtp::ServerProtocol::doQuit( const std::string & , bool & )
|
void GSmtp::ServerProtocol::doQuit( const std::string & , bool & )
|
||||||
{
|
{
|
||||||
sendClosing() ;
|
// (could call sendClosing() here, but if it fails it does "delete this".
|
||||||
m_sender.protocolDone() ;
|
m_sender.protocolDone() ;
|
||||||
// do nothing more -- this object may have been deleted in protocolDone()
|
// do nothing more -- this object may have been deleted in protocolDone()
|
||||||
}
|
}
|
||||||
@ -390,7 +390,7 @@ void GSmtp::ServerProtocol::doUnknown( const std::string & line , bool & )
|
|||||||
void GSmtp::ServerProtocol::doRset( const std::string & , bool & )
|
void GSmtp::ServerProtocol::doRset( const std::string & , bool & )
|
||||||
{
|
{
|
||||||
m_pmessage.clear() ;
|
m_pmessage.clear() ;
|
||||||
m_sasl.init("") ; m_authenticated = false ; // (not clear in the RFCs)
|
// (could also reset authentication here)
|
||||||
sendRsetReply() ;
|
sendRsetReply() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -574,6 +574,8 @@ void GSmtp::ServerProtocol::send( std::string line )
|
|||||||
|
|
||||||
GSmtp::ServerProtocol::~ServerProtocol()
|
GSmtp::ServerProtocol::~ServerProtocol()
|
||||||
{
|
{
|
||||||
|
m_pmessage.doneSignal().disconnect() ;
|
||||||
|
m_pmessage.preparedSignal().disconnect() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GSmtp::ServerProtocol::parseFrom( const std::string & line ) const
|
std::string GSmtp::ServerProtocol::parseFrom( const std::string & line ) const
|
||||||
|
@ -81,6 +81,11 @@ GSmtp::Client::Client( std::auto_ptr<StoredMessage> message , const Secrets & se
|
|||||||
m_protocol.doneSignal().connect( G::slot(*this,&Client::protocolDone) ) ;
|
m_protocol.doneSignal().connect( G::slot(*this,&Client::protocolDone) ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GSmtp::Client::~Client()
|
||||||
|
{
|
||||||
|
m_protocol.doneSignal().disconnect() ;
|
||||||
|
}
|
||||||
|
|
||||||
std::string GSmtp::Client::startSending( const std::string & s , unsigned int connection_timeout )
|
std::string GSmtp::Client::startSending( const std::string & s , unsigned int connection_timeout )
|
||||||
{
|
{
|
||||||
size_t pos = s.find(':') ;
|
size_t pos = s.find(':') ;
|
||||||
|
@ -80,6 +80,9 @@ public:
|
|||||||
// message is fail()ed if the connection to the
|
// message is fail()ed if the connection to the
|
||||||
// downstream server cannot be made.
|
// downstream server cannot be made.
|
||||||
|
|
||||||
|
virtual ~Client() ;
|
||||||
|
// Destructor.
|
||||||
|
|
||||||
G::Signal1<std::string> & doneSignal() ;
|
G::Signal1<std::string> & doneSignal() ;
|
||||||
// Returns a signal which indicates that client processing
|
// Returns a signal which indicates that client processing
|
||||||
// is complete.
|
// is complete.
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# General configuration options
|
# General configuration options
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
PROJECT_NAME = E-MailRelay
|
PROJECT_NAME = E-MailRelay
|
||||||
PROJECT_NUMBER = 1.1.2
|
PROJECT_NUMBER = 1.1.3
|
||||||
OUTPUT_DIRECTORY =
|
OUTPUT_DIRECTORY =
|
||||||
OUTPUT_LANGUAGE = English
|
OUTPUT_LANGUAGE = English
|
||||||
EXTRACT_ALL = YES
|
EXTRACT_ALL = YES
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
//static
|
//static
|
||||||
std::string Main::Run::versionNumber()
|
std::string Main::Run::versionNumber()
|
||||||
{
|
{
|
||||||
return "1.1.2" ;
|
return "1.1.3" ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Main::Run::Run( Main::Output & output , const G::Arg & arg , const std::string & switch_spec ) :
|
Main::Run::Run( Main::Output & output , const G::Arg & arg , const std::string & switch_spec ) :
|
||||||
@ -62,6 +62,9 @@ Main::Run::Run( Main::Output & output , const G::Arg & arg , const std::string &
|
|||||||
|
|
||||||
Main::Run::~Run()
|
Main::Run::~Run()
|
||||||
{
|
{
|
||||||
|
if( m_store.get() ) m_store->signal().disconnect() ;
|
||||||
|
if( m_client.get() ) m_client->doneSignal().disconnect() ;
|
||||||
|
if( m_client.get() ) m_client->eventSignal().disconnect() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Main::Configuration Main::Run::cfg() const
|
Main::Configuration Main::Run::cfg() const
|
||||||
|
@ -116,13 +116,13 @@ private:
|
|||||||
std::string m_switch_spec ;
|
std::string m_switch_spec ;
|
||||||
std::auto_ptr<CommandLine> m_cl ;
|
std::auto_ptr<CommandLine> m_cl ;
|
||||||
std::auto_ptr<G::LogOutput> m_log_output ;
|
std::auto_ptr<G::LogOutput> m_log_output ;
|
||||||
std::auto_ptr<GSmtp::Client> m_client ;
|
|
||||||
G::Arg m_arg ;
|
G::Arg m_arg ;
|
||||||
G::Signal3<std::string,std::string,std::string> m_signal ;
|
G::Signal3<std::string,std::string,std::string> m_signal ;
|
||||||
std::auto_ptr<GSmtp::FileStore> m_store ;
|
std::auto_ptr<GSmtp::FileStore> m_store ; // order dependency -- early
|
||||||
std::auto_ptr<GSmtp::Secrets> m_client_secrets ;
|
std::auto_ptr<GSmtp::Secrets> m_client_secrets ;
|
||||||
std::auto_ptr<GSmtp::AdminServer> m_admin_server ;
|
std::auto_ptr<GSmtp::AdminServer> m_admin_server ;
|
||||||
std::auto_ptr<GNet::Timer> m_poll_timer ;
|
std::auto_ptr<GNet::Timer> m_poll_timer ;
|
||||||
|
std::auto_ptr<GSmtp::Client> m_client ; // order dependency -- late
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user