Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
John McEleney
/
mailutils
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
70a288c9
...
70a288c9bb87bca54e1c7493f6c3ee1e71363f07
authored
2001-05-09 04:30:23 +0000
by
Alain Magloire
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
new file.
1 parent
b0f41a71
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
128 additions
and
0 deletions
imap4d/bye.c
imap4d/signal.c
imap4d/bye.c
0 → 100644
View file @
70a288c
/* GNU mailutils - a suite of utilities for electronic mail
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "imap4d.h"
int
imap4d_bye
(
int
reason
)
{
struct
passwd
*
pw
=
getpwuid
(
getuid
());
const
char
*
username
;
int
status
=
EXIT_FAILURE
;
username
=
(
pw
)
?
pw
->
pw_name
:
"Unknown"
;
mailbox_close
(
mbox
);
mailbox_destroy
(
&
mbox
);
switch
(
reason
)
{
case
ERR_NO_MEM
:
util_out
(
RESP_BYE
,
"Server terminating no more ressources."
);
syslog
(
LOG_ERR
,
"Out of memory"
);
break
;
case
ERR_SIGNAL
:
util_out
(
RESP_BYE
,
"Quitting on signal"
);
syslog
(
LOG_ERR
,
"Quitting on signal"
);
break
;
case
ERR_TIMEOUT
:
util_out
(
RESP_BYE
,
"Session timed out"
);
if
(
state
==
STATE_NONAUTH
)
syslog
(
LOG_INFO
,
"Session timed out for no user"
);
else
syslog
(
LOG_INFO
,
"Session timed out for user: %s"
,
username
);
break
;
case
ERR_NO_OFILE
:
syslog
(
LOG_INFO
,
"No socket to send to"
);
break
;
case
OK
:
util_out
(
RESP_BYE
,
"Session terminating."
);
if
(
state
==
STATE_NONAUTH
)
syslog
(
LOG_INFO
,
"Session terminating"
);
else
syslog
(
LOG_INFO
,
"Session terminating for user: %s"
,
username
);
status
=
EXIT_SUCCESS
;
break
;
default:
util_out
(
RESP_BYE
,
"Quitting (reason unknown)"
);
syslog
(
LOG_ERR
,
"Unknown quit"
);
break
;
}
closelog
();
exit
(
status
);
}
imap4d/signal.c
0 → 100644
View file @
70a288c
/* GNU mailutils - a suite of utilities for electronic mail
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#define __USE_MISC
#include "imap4d.h"
RETSIGTYPE
imap4d_sigchld
(
int
signo
)
{
pid_t
pid
;
int
status
;
while
(
(
pid
=
waitpid
(
-
1
,
&
status
,
WNOHANG
))
>
0
)
--
children
;
#ifndef HAVE_SIGACTION
/* On some system, signal implements the unreliable semantic and
has to be rearm. */
signal
(
signo
,
imap4d_sigchld
);
#endif
}
/* Default signal handler to call the imap4d_bye() function */
RETSIGTYPE
imap4d_signal
(
int
signo
)
{
extern
const
char
*
const
sys_siglist
[];
/* syslog (LOG_CRIT, "got signal %d", signo); */
syslog
(
LOG_CRIT
,
"got signal %s"
,
sys_siglist
[
signo
]);
/* Master process. */
if
(
!
ofile
)
{
syslog
(
LOG_CRIT
,
"MASTER: exiting on signal"
);
exit
(
1
);
/* abort(); */
}
if
(
signo
==
SIGALRM
)
imap4d_bye
(
ERR_TIMEOUT
);
imap4d_bye
(
ERR_SIGNAL
);
}
Please
register
or
sign in
to post a comment