Mercurial > noffle
diff src/fetch.c @ 464:d9035d08fe51 noffle
[svn] * src/fetch.c: Log failed posting that we can't mail back to the sender
or where sending fails to <Noffle spool>/failed.posting.
author | bears |
---|---|
date | Wed, 23 Jul 2003 10:32:25 +0100 |
parents | 39d9c19ffba4 |
children | 614a3177b15c |
line wrap: on
line diff
--- a/src/fetch.c Wed Jul 23 10:31:01 2003 +0100 +++ b/src/fetch.c Wed Jul 23 10:32:25 2003 +0100 @@ -1,7 +1,7 @@ /* fetch.c - $Id: fetch.c 415 2003-01-10 22:40:18Z bears $ + $Id: fetch.c 609 2003-07-23 09:32:25Z bears $ */ #if HAVE_CONFIG_H @@ -296,8 +296,15 @@ } static void +saveArticleInFailedPostings( const char *msgId, const char *article ) +{ + + Utl_writeFile( Cfg_spoolDir(), "failed.posting", msgId, article ); +} + +static void returnArticleToSender( const char *sender, const char *reason, - const char *article ) + const char *msgId, const char *article ) { int ret; Str cmd; @@ -309,7 +316,10 @@ lastHandler = signal( SIGPIPE, SIG_IGN ); f = popen( cmd, "w" ); if ( f == NULL ) + { Log_err( "Invocation of '%s' failed (%s)", cmd, strerror( errno ) ); + saveArticleInFailedPostings( msgId, article ); + } else { fprintf( f, @@ -331,7 +341,10 @@ reason, article ); ret = pclose( f ); if ( ret != EXIT_SUCCESS ) + { Log_err( "'%s' exit value %d", cmd, ret ); + saveArticleInFailedPostings( msgId, article ); + } signal( SIGPIPE, lastHandler ); } } @@ -372,10 +385,13 @@ && ! Prt_searchHeader( txt, "X-NOFFLE-X-SENDER", sender ) /* see server.c */ && ! Prt_searchHeader( txt, "FROM", sender ) ) + { Log_err( "Article %s has no From/Sender/X-Sender field", msgId ); + saveArticleInFailedPostings( msgId, txt ); + } else - returnArticleToSender( sender, errStr, txt ); + returnArticleToSender( sender, errStr, msgId, txt ); } } while ( Out_next( msgId, s ) );