Module: ngircd.git
Branch: master
Commit: 07dbb73c929aa3f478abc51575c2dcafe6a62111
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=07dbb73c…
Author: Alexander Barton <alex(a)barton.de>
Date: Wed Sep 7 15:39:41 2011 +0200
Update doc/GIT.txt
---
doc/GIT.txt | 37 ++++++++++++++++++++++++-------------
1 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/doc/GIT.txt b/doc/GIT.txt
index 4375184..f3b2e63 100644
--- a/doc/GIT.txt
+++ b/doc/GIT.txt
@@ -9,13 +9,23 @@
-- GIT.txt --
-The source code of ngIRCd is maintained using git, the stupid content
-tracker.
+The source code of ngIRCd is maintained using GIT, an distributed version
+control system. Homepage including documentation: <http://git-scm.com/>.
-I. Getting the source code
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-To access the source tree anonymously, run:
+I. Viewing the source code online
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The ngIRCd "GITweb" interface allows you to browse the GIT repository and
+to see all individual files, tags, branches, commits etc.:
+
+ <http://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git>
+
+
+II. Getting the source code
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To access (copy, clone) the source tree repository anonymously, run:
$ git clone git://ngircd.barton.de/ngircd.git
@@ -23,23 +33,23 @@ Thereby a new folder "ngircd" will be created containing all the individual
source files.
The newly created directory ("ngircd") is the "working directory", all
-git commands will be executed from within this directory in the future.
+GIT commands will be executed from within this directory in the future.
-Please note: When checking out a fresh copy of ngIRCd using git, the
+Please note: When checking out a fresh copy of ngIRCd using GIT, the
configure script doesn't exist; you have to run the autogen.sh shell script
(which is included in the source tree) to generate it. This requires you to
have GNU automake and GNU autoconf installed on your system. Please see the
file INSTALL for details!
-To update the git tree:
+To update the local GIT repository:
$ git pull
This retrieves all changes and merges them into the current branch.
-II. Contributing
-~~~~~~~~~~~~~~~~
+III. Contributing
+~~~~~~~~~~~~~~~~~
Patches should be sent to the ngircd mailing list. List homepage:
http://arthur.barton.de/mailman/listinfo/ngircd-ml
@@ -48,7 +58,8 @@ If you do not want to send them to the list, you can also mail them
to Alex Barton, <alex(a)barton.de>.
-III. Write Access
-~~~~~~~~~~~~~~~~~
-If you want to contribute a couple of patches and write access to the git
+IV. Write Access
+~~~~~~~~~~~~~~~~
+
+If you want to contribute a couple of patches and write access to the GIT
repository would be handy, please contact Alex Barton, <alex(a)barton.de>.
Module: ngircd.git
Branch: master
Commit: 30796698a9fca0037ea48f70ceafac1e783d06fb
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=30796698…
Author: Alexander Barton <alex(a)barton.de>
Date: Wed Sep 7 14:51:16 2011 +0200
Only close "unrelated" sockets in forked child processes
This fixes the problem that ngIRCd can't do any IDENT lookups because
of the socket has already been closed in the child process.
The bug has been introduced starting with ngIRCd 17 ... :-(
(commit ID 6ebb31ab35e)
---
src/ngircd/conn.c | 7 ++++---
src/ngircd/conn.h | 4 ++--
src/ngircd/irc-login.c | 3 ++-
src/ngircd/proc.c | 1 -
src/ngircd/resolve.c | 6 ++++--
5 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c
index 407da1a..aa754eb 100644
--- a/src/ngircd/conn.c
+++ b/src/ngircd/conn.c
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2010 Alexander Barton <alex(a)barton.de>
+ * Copyright (c)2001-2011 Alexander Barton (alex(a)barton.de) and Contributors.
*
* 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
@@ -435,12 +435,13 @@ Conn_Exit( void )
* they don't hold connections open that the main process wants to close.
*/
GLOBAL void
-Conn_CloseAllSockets(void)
+Conn_CloseAllSockets(int ExceptOf)
{
CONN_ID idx;
for(idx = 0; idx < Pool_Size; idx++) {
- if(My_Connections[idx].sock > NONE)
+ if(My_Connections[idx].sock > NONE &&
+ My_Connections[idx].sock != ExceptOf)
close(My_Connections[idx].sock);
}
}
diff --git a/src/ngircd/conn.h b/src/ngircd/conn.h
index c813729..251da2a 100644
--- a/src/ngircd/conn.h
+++ b/src/ngircd/conn.h
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2010 Alexander Barton <alex(a)barton.de>
+ * Copyright (c)2001-2011 Alexander Barton (alex(a)barton.de) and Contributors.
*
* 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
@@ -106,7 +106,7 @@ GLOBAL long WCounter;
GLOBAL void Conn_Init PARAMS((void ));
GLOBAL void Conn_Exit PARAMS(( void ));
-GLOBAL void Conn_CloseAllSockets PARAMS((void));
+GLOBAL void Conn_CloseAllSockets PARAMS((int ExceptOf));
GLOBAL unsigned int Conn_InitListeners PARAMS(( void ));
GLOBAL void Conn_ExitListeners PARAMS(( void ));
diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c
index 0577cd9..884a06b 100644
--- a/src/ngircd/irc-login.c
+++ b/src/ngircd/irc-login.c
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2010 Alexander Barton (alex(a)barton.de)
+ * Copyright (c)2001-2011 Alexander Barton (alex(a)barton.de) and Contributors.
*
* 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
@@ -959,6 +959,7 @@ Hello_User(CLIENT * Client)
} else {
/* Sub process */
Log_Init_Subprocess("Auth");
+ Conn_CloseAllSockets(NONE);
result = PAM_Authenticate(Client);
if (write(pipefd[1], &result, sizeof(result)) != sizeof(result))
Log_Subprocess(LOG_ERR,
diff --git a/src/ngircd/proc.c b/src/ngircd/proc.c
index fd2df1d..7addb47 100644
--- a/src/ngircd/proc.c
+++ b/src/ngircd/proc.c
@@ -79,7 +79,6 @@ Proc_Fork(PROC_STAT *proc, int *pipefds, void (*cbfunc)(int, short), int timeout
signal(SIGALRM, Proc_GenericSignalHandler);
close(pipefds[0]);
alarm(timeout);
- Conn_CloseAllSockets();
return 0;
}
diff --git a/src/ngircd/resolve.c b/src/ngircd/resolve.c
index 9b17af9..c7e6003 100644
--- a/src/ngircd/resolve.c
+++ b/src/ngircd/resolve.c
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2009 by Alexander Barton (alex(a)barton.de)
+ * Copyright (c)2001-2011 Alexander Barton (alex(a)barton.de) and Contributors.
*
* 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
@@ -75,7 +75,8 @@ Resolve_Addr(PROC_STAT * s, const ng_ipaddr_t *Addr, int identsock,
} else if( pid == 0 ) {
/* Sub process */
Log_Init_Subprocess("Resolver");
- Do_ResolveAddr( Addr, identsock, pipefd[1]);
+ Conn_CloseAllSockets(identsock);
+ Do_ResolveAddr(Addr, identsock, pipefd[1]);
Log_Exit_Subprocess("Resolver");
exit(0);
}
@@ -104,6 +105,7 @@ Resolve_Name( PROC_STAT *s, const char *Host, void (*cbfunc)(int, short))
} else if( pid == 0 ) {
/* Sub process */
Log_Init_Subprocess("Resolver");
+ Conn_CloseAllSockets(NONE);
Do_ResolveName(Host, pipefd[1]);
Log_Exit_Subprocess("Resolver");
exit(0);