summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-10-02 10:55:42 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2008-10-02 10:55:42 +0200
commit09d2e1c707d6cdb6841559e69591c57536b998b7 (patch)
treec9e4ec5b94f39b2b89aee163b94206f6faeb8f84
parentd03fb1b9058a3e81c8d0ba72b916d514106567ed (diff)
parent9812a2af8c308c1b29bc0b5604593595a66dd25d (diff)
downloadrsyslog-09d2e1c707d6cdb6841559e69591c57536b998b7.tar.gz
rsyslog-09d2e1c707d6cdb6841559e69591c57536b998b7.tar.xz
rsyslog-09d2e1c707d6cdb6841559e69591c57536b998b7.zip
Merge branch 'beta'
-rw-r--r--ChangeLog9
-rw-r--r--README2
-rw-r--r--doc/Makefile.am2
-rw-r--r--doc/build_from_repo.html54
-rw-r--r--doc/index.html32
-rw-r--r--doc/install.html19
-rw-r--r--doc/manual.html1
-rw-r--r--doc/rsyslog_conf.html7
-rw-r--r--runtime/net.c27
9 files changed, 140 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 98950d52..816b7013 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -270,14 +270,19 @@ Version 3.19.0 (rgerhards), 2008-05-06
for the patch
---------------------------------------------------------------------------
Version 3.18.5 (rgerhards), 2008-10-??
-- added doc on malformed messages, cause and how to work-around, to the
- doc set
- bugfix: imudp input module could cause segfault on HUP
It did not properly de-init a variable acting as a linked list head.
That resulted in trying to access freed memory blocks after the HUP.
+- bugfix: rsyslogd could hang on HUP
+ because getnameinfo() is not cancel-safe, but was not guarded against
+ being cancelled. pthread_cancel() is routinely being called during
+ HUP processing.
- doc bugfix: $ActionExecOnlyWhenPreviousIsSuspended was still misspelled
as $...OnlyIfPrev... in some parts of the documentation. Thanks to
Lorenzo M. Catucci for reporting this bug.
+- added doc on malformed messages, cause and how to work-around, to the
+ doc set
+- added doc on how to build from source repository
---------------------------------------------------------------------------
Version 3.18.4 (rgerhards), 2008-09-18
- bugfix: order-of magnitude issue with base-10 size definitions
diff --git a/README b/README
index e8cc42f8..e929c831 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This file has been superseeded by the fils in the doc folder.
+This file has been superseeded by the files in the doc folder.
Please see doc/manual.html for futher details. If you are
looking for install information doc/install.html is for you!
If you do not have the doc set, see
diff --git a/doc/Makefile.am b/doc/Makefile.am
index edf3bbb5..22d368e0 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,4 +1,5 @@
html_files = \
+ index.html \
bugs.html \
debug.html \
features.html \
@@ -7,6 +8,7 @@ html_files = \
history.html \
how2help.html \
install.html \
+ build_from_repo.html \
ipv6.html \
log_rotation_fix_size.html \
manual.html \
diff --git a/doc/build_from_repo.html b/doc/build_from_repo.html
new file mode 100644
index 00000000..8d3b20fe
--- /dev/null
+++ b/doc/build_from_repo.html
@@ -0,0 +1,54 @@
+<html><head>
+<title>Building rsyslog from the source repository</title>
+</head>
+<body>
+<h1>Building rsyslog from the source repository</h1>
+<p>In most cases, people install rsyslog either via a package or use an "official"
+distribution tarball to generate it. But there may be situations where it is desirable
+to build directly from the source repository. This is useful for people who would like to
+participate in development or who would like to use the latest, not-yet-released code.
+The later may especially be the case if you are asked to try out an experimental version.
+<p>Building from the repsitory is not much different than building from the source
+tarball, but some files are missing because they are output files and thus do not
+belong into the repository.
+<h2>Obtaining the Source</h2>
+<p>First of all, you need to download the sources. Rsyslog is currently kept in a git
+repository. You can clone this repository either via http or git protocol (with the later
+being much faster. URLS are:
+<ul>
+<li>git://git.adiscon.com/git/rsyslog.git
+<li>http://git.adiscon.com/git/rsyslog.git
+</ul>
+<p>There is also a browsable version (gitweb) available at
+<a href="http://git.adiscon.com/?p=rsyslog.git;a=summary">http://git.adiscon.com/?p=rsyslog.git;a=summary</a>.
+This version also offers snapshots of each commit for easy download. You can use these if
+you do not have git present on your system.
+<p>After you have cloned the repository, you are in the master branch by default. This
+is where we keep the devel branch. If you need any other branch, you need to do
+a "git checkout --track -b branch origin/branch". For example, the command to check out
+the beta branch is "git checkout --track -b beta origin/beta".
+<h2>Prequisites</h2>
+<p>To build the compilation system, you need the <b>pkg-config</b> package (an utility for
+autotools) present on your system. Otherwise, configure will fail with something like
+<pre><code>
+checking for SYSLOG_UNIXAF support... yes
+checking for FSSTND support... yes
+./configure: line 25895: syntax error near unexpected token `RELP,'
+./configure: line 25895: ` PKG_CHECK_MODULES(RELP, relp >= 0.1.1)'
+</code></pre>
+<h2>Creating the Build Environment</h2>
+<p>This is fairly easy: just issue "<b>autoreconf -fvi</b>", which should do everything you need.
+Once this is done, you can follow the usual ./configure steps just like when
+you downloaded an official distribution tarball (see the
+<a href="install.html">rsyslog install guide</a>, starting at step 2,
+for further details about that).
+
+<p>[<a href="manual.html">manual index</a>]
+[<a href="http://www.rsyslog.com/">rsyslog site</a>]</p>
+<p><font size="2">This documentation is part of the
+<a href="http://www.rsyslog.com/">rsyslog</a> project.<br>
+Copyright &copy; 2008 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and
+<a href="http://www.adiscon.com/">Adiscon</a>. Released under the GNU GPL
+version 1.2 or higher.</font></p>
+</body>
+</html>
diff --git a/doc/index.html b/doc/index.html
new file mode 100644
index 00000000..349c8e57
--- /dev/null
+++ b/doc/index.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><title>Welcome to rsyslog</title></head>
+<body>
+<h1>Welcome to rsyslog</h1>
+<p><b><a href="http://www.rsyslog.com/">Rsyslog</a>
+is an enhanced syslogd suitable both for small systems as
+well as large enterprises.</b>
+<p>This page provide a few quick pointers which hopefully make your
+experience with rsyslog a pleasant one. These are
+<ul>
+<li><b>Most importantly, the <a href="manual.html">rsyslog manual</a></b> - this points to locally
+installed documentation which exactly matches the version you have installed.
+It is highly suggested to at least briefly look over these files.
+<li>The <a href="http://www.rsyslog.com">rsyslog web site</a> which offers
+probably every information you'll ever need (ok, just kidding...).
+<li>The <a href="http://www.rsyslog.com/doc-status.html">project status page</a> provides
+information on current releases
+<li>and the <a href="troubleshoot.html">troubleshooting guide</a> hopefully helps if
+things do not immediately work out
+</ul>
+<p>In general, rsyslog supports plain old syslog.conf format, except that the
+config file is now called rsyslog.conf. This should help you get started
+quickly.
+To do the really cool things, though,
+you need to learn a bit about its new features.
+The man pages offer a bare minimum of information (and are still quite long). Read the
+<a href="manual.html">html documentation</a> instead.
+When you change the configuration,
+remember to restart (or HUP) rsyslogd, because otherwise it won't use your
+new settings (and you'll end up totally puzzled why this great config of yours
+does not even work a bit...;))
+</body></html>
diff --git a/doc/install.html b/doc/install.html
index 661ae943..48b7f649 100644
--- a/doc/install.html
+++ b/doc/install.html
@@ -24,7 +24,11 @@ you volunteer to create one, <a href="mailto:rgerhards@adiscon.com">drop me a
line</a>). Thus, this guide focuses on installing from the source, which
thankfully is <b>quite easy</b>.</p>
<h3>Step 1 - Download Software</h3>
-<p>For obvious reasons, you need to download rsyslog. Load the most recent build
+<p>For obvious reasons, you need to download rsyslog. Here, I assume that you
+use a distribution tarball. If you would like to use a version directly from
+the repository, see <a href="build_from_repo.html">build rsyslog from repository</a>
+instead.
+<p>Load the most recent build
from <a href="http://www.rsyslog.com/downloads">http://www.rsyslog.com/downloads</a>.
Extract the software with &quot;tar xzf -nameOfDownloadSet-&quot;. This will create a new
subdirectory rsyslog-version in the current working directory. CD into that. </p>
@@ -150,9 +154,12 @@ comments or bug sighting reports are very welcome. Please
<li>2007-07-13 *
<a href="http://www.adiscon.com/en/people/rainer-gerhards.php">Rainer Gerhards</a>&nbsp;
* updated to new autotools-based build system</li>
+ <li>2008-10-01 *
+ <a href="http://www.adiscon.com/en/people/rainer-gerhards.php">Rainer Gerhards</a>&nbsp;
+ * added info on building from source repository</li>
</ul>
<h3>Copyright</h3>
-<p>Copyright (c) 2005, 2007
+<p>Copyright &copy; 2005-2008
<a href="http://www.adiscon.com/en/people/rainer-gerhards.php">Rainer Gerhards</a> and
<a href="http://www.adiscon.com/en/">Adiscon</a>.</p>
<p> Permission is granted to copy, distribute and/or modify this document
@@ -162,6 +169,12 @@ comments or bug sighting reports are very welcome. Please
Texts. A copy of the license can be viewed at
<a href="http://www.gnu.org/copyleft/fdl.html">
http://www.gnu.org/copyleft/fdl.html</a>.</p>
-
+<p>[<a href="manual.html">manual index</a>]
+[<a href="http://www.rsyslog.com/">rsyslog site</a>]</p>
+<p><font size="2">This documentation is part of the
+<a href="http://www.rsyslog.com/">rsyslog</a> project.<br>
+Copyright &copy; 2008 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and
+<a href="http://www.adiscon.com/">Adiscon</a>. Released under the GNU GPL
+version 1.2 or higher.</font></p>
</body>
</html>
diff --git a/doc/manual.html b/doc/manual.html
index 91e7d0eb..e40f0c06 100644
--- a/doc/manual.html
+++ b/doc/manual.html
@@ -45,6 +45,7 @@ generic syslog application design</a><!-- not good as it currently is ;) <li><a
<p><b>We have some in-depth papers on</b></p>
<ul>
<li><a href="install.html">installing rsyslog</a></li>
+<li><a href="build_from_repo.html">obtaining rsyslog from the source repository</a></li>
<li><a href="ipv6.html">rsyslog and IPv6</a> (which is fully supported)</li>
<li><a href="rsyslog_tls.html">native TLS encryption for syslog</a></li>
<li><a href="rsyslog_stunnel.html">ssl-encrypting syslog with stunnel</a></li>
diff --git a/doc/rsyslog_conf.html b/doc/rsyslog_conf.html
index 0db69451..7cd40cb7 100644
--- a/doc/rsyslog_conf.html
+++ b/doc/rsyslog_conf.html
@@ -29,7 +29,7 @@ what they do (list is currently not complete)</p>
trap output module</li>
<li><a href="omrelp.html">omrelp</a> - RELP
output module</li>
-<li>omgss - output module for GSS-enabled syslog</li>
+<li>omgssapi - output module for GSS-enabled syslog</li>
<li><a href="ommysql.html">ommysql</a> - output module for MySQL</li>
<li>ompgsql - output module for PostgreSQL</li>
<li><a href="omlibdbi.html">omlibdbi</a> -
@@ -45,7 +45,7 @@ input module</li>
<li><a href="imtcp.html">imtcp</a> - input
plugin for plain tcp syslog</li>
<li><a href="imgssapi.html">imgssapi</a> -
-input plugin for plain tcp and GSS-enable syslog</li>
+input plugin for plain tcp and GSS-enabled syslog</li>
<li>immark - support for mark messages</li>
<li><a href="imklog.html">imklog</a> - kernel logging</li>
<li><a href="imuxsock.html">imuxsock</a> -
@@ -1255,6 +1255,5 @@ When compared to syslogd from sysklogd package, rsyslogd offers
additional
<a href="features.html">features</a> (like template
and database support). For obvious reasons, the syntax for defining
-such features is available in rsyslogd, only.<br>
-&nbsp;</p>
+such features is available in rsyslogd, only.</p>
</body></html>
diff --git a/runtime/net.c b/runtime/net.c
index f5b8f46a..b9af700c 100644
--- a/runtime/net.c
+++ b/runtime/net.c
@@ -450,6 +450,27 @@ static inline void MaskIP4 (struct in_addr *addr, uint8_t bits) {
#define SIN(sa) ((struct sockaddr_in *)(sa))
#define SIN6(sa) ((struct sockaddr_in6 *)(sa))
+
+/* This is a cancel-safe getnameinfo() version, because we learned
+ * (via drd/valgrind) that getnameinfo() seems to have some issues
+ * when being cancelled, at least if the module was dlloaded.
+ * rgerhards, 2008-09-30
+ */
+static inline int
+mygetnameinfo(const struct sockaddr *sa, socklen_t salen,
+ char *host, size_t hostlen,
+ char *serv, size_t servlen, int flags)
+{
+ int iCancelStateSave;
+ int i;
+
+ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &iCancelStateSave);
+ i = getnameinfo(sa, salen, host, hostlen, serv, servlen, flags);
+ pthread_setcancelstate(iCancelStateSave, NULL);
+ return i;
+}
+
+
/* This function adds an allowed sender entry to the ACL linked list.
* In any case, a single entry is added. If an error occurs, the
* function does its error reporting itself. All validity checks
@@ -708,7 +729,7 @@ void PrintAllowedSenders(int iListToPrint)
if (F_ISSET(pSender->allowedSender.flags, ADDR_NAME))
dbgprintf ("\t%s\n", pSender->allowedSender.addr.HostWildcard);
else {
- if(getnameinfo (pSender->allowedSender.addr.NetAddr,
+ if(mygetnameinfo (pSender->allowedSender.addr.NetAddr,
SALEN(pSender->allowedSender.addr.NetAddr),
(char*)szIP, 64, NULL, 0, NI_NUMERICHOST) == 0) {
dbgprintf ("\t%s/%u\n", szIP, pSender->SignificantBits);
@@ -982,7 +1003,7 @@ gethname(struct sockaddr_storage *f, uchar *pszHostFQDN, uchar *ip)
assert(f != NULL);
assert(pszHostFQDN != NULL);
- error = getnameinfo((struct sockaddr *)f, SALEN((struct sockaddr *)f),
+ error = mygetnameinfo((struct sockaddr *)f, SALEN((struct sockaddr *)f),
(char*) ip, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
if (error) {
@@ -997,7 +1018,7 @@ gethname(struct sockaddr_storage *f, uchar *pszHostFQDN, uchar *ip)
sigaddset(&nmask, SIGHUP);
pthread_sigmask(SIG_BLOCK, &nmask, &omask);
- error = getnameinfo((struct sockaddr *)f, SALEN((struct sockaddr *) f),
+ error = mygetnameinfo((struct sockaddr *)f, SALEN((struct sockaddr *) f),
(char*)pszHostFQDN, NI_MAXHOST, NULL, 0, NI_NAMEREQD);
if (error == 0) {