Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion procServ.cc
Original file line number Diff line number Diff line change
Expand Up @@ -657,7 +657,7 @@ int main(int argc,char * argv[])
PRINTF("Option oneshot is set... exiting\n");
shutdownServer = true;
} else {
npi= processFactory(childExec, childArgv);
npi= processFactory(childExec, childArgv, &sigset_pselect);
if (npi) AddConnection(npi);
if (firstRun) {
firstRun = false;
Expand Down
2 changes: 1 addition & 1 deletion procServ.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ void DeleteConnection(connectionItem *ci);
// constructors are public:

// processFactory creates the process that we are managing
connectionItem * processFactory(char *exe, char *argv[]);
connectionItem * processFactory(char *exe, char *argv[], sigset_t *sigset);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could be const sigset_t *sigset

bool processFactoryNeedsRestart(); // Call to test status of the server process
void processFactorySendSignal(int signal);

Expand Down
4 changes: 2 additions & 2 deletions processClass.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@

class processClass : public connectionItem
{
friend connectionItem * processFactory(char *exe, char *argv[]);
friend connectionItem * processFactory(char *exe, char *argv[], sigset_t *sigset);
friend bool processFactoryNeedsRestart();
friend void processFactorySendSignal(int signal);
public:
processClass(char *exe, char *argv[]);
processClass(char *exe, char *argv[], sigset_t *sigset);
Comment on lines +18 to +22

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for these

void readFromFd(void);
int Send(const char *,int);
void markDeadIfChildIs(pid_t pid) { if (pid==_pid) _markedForDeletion=true; }
Expand Down
7 changes: 4 additions & 3 deletions processFactory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ bool processFactoryNeedsRestart()
return true;
}

connectionItem * processFactory(char *exe, char *argv[])
connectionItem * processFactory(char *exe, char *argv[], sigset_t *sigset)
{
const size_t BUFLEN = 512;
char buf[BUFLEN];
Expand All @@ -71,7 +71,7 @@ connectionItem * processFactory(char *exe, char *argv[])
SendToAll( buf, strlen(buf), 0 );
}

connectionItem *ci = new processClass(exe, argv);
connectionItem *ci = new processClass(exe, argv, sigset);
PRINTF("Created new child connection (processClass %p)\n", ci);
return ci;
}
Expand Down Expand Up @@ -126,7 +126,7 @@ processClass::~processClass()
// parent: sets the minimum time for the next restart
// child: sets the coresize, becomes a process group leader,
// and does an execvp() with the command
processClass::processClass(char *exe, char *argv[])
processClass::processClass(char *exe, char *argv[], sigset_t *sigset)
{
_runningItem=this;
struct rlimit corelimit;
Expand Down Expand Up @@ -208,6 +208,7 @@ processClass::processClass(char *exe, char *argv[])
corelimit.rlim_cur = coreSize;
setrlimit( RLIMIT_CORE, &corelimit );
}
sigprocmask(SIG_SETMASK, sigset, NULL);
if ( chDir && chdir( chDir ) ) {
fprintf( stderr, "%s: child could not chdir to %s, %s\n",
procservName, chDir, strerror(errno) );
Expand Down