tags 562647 + pending
thanks

Dear Martin,

I have prepared an NMU for gidentd (version 0.4.5+dfsg1-0.3) to fix
the RC bug #562647 (Does not work with ipv4 after recent change in
netbase) as well as a number of other problems with the package, for
example lintian’s complaints and that configure was run multiple ti-
mes during the build process. I have also raised the debhelper com-
pat to 5 and bumped Standards-Version accordingly.

I will ask my AM to upload it to DELAYED/5, according to devref §5.11.1.
Please find the diff attached.

bye,
//mirabilos
-- 
Solange man keine schmutzigen Tricks macht, und ich meine *wirklich*
schmutzige Tricks, wie bei einer doppelt verketteten Liste beide
Pointer XORen und in nur einem Word speichern, funktioniert Boehm ganz
hervorragend.           -- Andreas Bogk über boehm-gc in d.a.s.r
diff -u gidentd-0.4.5+dfsg1/debian/control gidentd-0.4.5+dfsg1/debian/control
--- gidentd-0.4.5+dfsg1/debian/control
+++ gidentd-0.4.5+dfsg1/debian/control
@@ -2,14 +2,15 @@
 Section: net
 Priority: optional
 Maintainer: Martin Loschwitz <madk...@debian.org>
-Build-Depends: debhelper (>= 4.1.37), dpatch (>= 1.15)
-Standards-Version: 3.7.2
+Build-Depends: debhelper (>= 5), dpatch (>= 1.15)
+Standards-Version: 3.8.3
+Homepage: http://gidentd.NeverAgain.DE/
 
 Package: gidentd
 Architecture: any
 Replaces: ident-server
 Provides: ident-server
-Depends: ${shlibs:Depends}, update-inetd, logrotate
+Depends: ${misc:Depends}, ${shlibs:Depends}, update-inetd, logrotate
 Conflicts: ident-server
 Description: RFC1413 compliant IPv4/IPv6 ident daemon
  gidentd is a fully functional, RFC1413 compliant ident daemon,
diff -u gidentd-0.4.5+dfsg1/debian/changelog 
gidentd-0.4.5+dfsg1/debian/changelog
--- gidentd-0.4.5+dfsg1/debian/changelog
+++ gidentd-0.4.5+dfsg1/debian/changelog
@@ -1,3 +1,23 @@
+gidentd (0.4.5+dfsg1-0.3) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Overhaul IPv4/IPv6 handling. (Closes: #562647)
+  * Bump to debhelper v5.
+  * Fix stampfile handling to prevent multiple configure/make runs.
+  * Fix the following lintian warnings:
+    - command-with-path-in-maintainer-script
+    - copyright-file-contains-full-gfdl-license
+    - debian-rules-ignores-make-clean-error
+    - debian-rules-sets-DH_COMPAT
+    - patch-system-but-no-source-readme
+    - debhelper-but-no-misc-depends
+    - copyright-refers-to-versionless-license-file
+  * debian/control: Add Homepage.
+  * debian/rules: Support parallel=n in DEB_BUILD_OPTIONS.
+  * Bump Standards-Version to 3.8.3.
+
+ -- Thorsten Glaser <t...@mirbsd.de>  Thu, 31 Dec 2009 22:48:49 +0000
+
 gidentd (0.4.5+dfsg1-0.2) unstable; urgency=low
 
   * Non-maintainer upload.
diff -u gidentd-0.4.5+dfsg1/debian/gidentd.8 
gidentd-0.4.5+dfsg1/debian/gidentd.8
--- gidentd-0.4.5+dfsg1/debian/gidentd.8
+++ gidentd-0.4.5+dfsg1/debian/gidentd.8
@@ -32,11 +32,11 @@
 
 .TP
 .B "\-4"
-Run \fBgidentd\fP in IPv4 mode, don't use IPv6.
+Run \fBgidentd\fP in IPv4 only mode, don't use IPv6.
 
 .TP
 .B "\-6"
-Run \fBgidentd\fP in IPv6 mode.
+Run \fBgidentd\fP in IPv6 only mode, don't use IPv4.
 
 .TP
 .B "\-a"
diff -u gidentd-0.4.5+dfsg1/debian/rules gidentd-0.4.5+dfsg1/debian/rules
--- gidentd-0.4.5+dfsg1/debian/rules
+++ gidentd-0.4.5+dfsg1/debian/rules
@@ -1,7 +1,5 @@
 #!/usr/bin/make -f
 
-export DH_COMPAT=4
-
 # dpatch stuff
 include /usr/share/dpatch/dpatch.make
 
@@ -12,22 +10,30 @@
        INSTALL_PROGRAM += -s
 endif
 
-configure: patch configure-stamp
-configure-stamp:
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+NUMJOBS=               $(patsubst parallel=%,%,$(filter 
parallel=%,$(DEB_BUILD_OPTIONS)))
+MAKEFLAGS+=            -j${NUMJOBS}
+endif
+
+configure: configure-stamp
+configure-stamp: ${DPATCH_STAMPFN}
 
        dh_testdir
        ./configure --prefix=/usr --mandir=\$${prefix}/share/man 
--infodir=\$${prefix}/share/info --bindir=/usr/bin --sbindir=/usr/sbin 
--datadir=/etc/gidentd
+       @:>$@
        
-build: configure build-stamp
-build-stamp:
+build: build-stamp
+build-stamp: configure-stamp
 
        dh_testdir
        $(MAKE)
+       @:>$@
 
 clean: unpatch
 
        dh_testdir
-       -$(MAKE) distclean
+       [ ! -f Makefile ] || $(MAKE) distclean
+       rm -f configure-stamp build-stamp
        dh_clean
 
 install: build
diff -u gidentd-0.4.5+dfsg1/debian/gidentd.preinst 
gidentd-0.4.5+dfsg1/debian/gidentd.preinst
--- gidentd-0.4.5+dfsg1/debian/gidentd.preinst
+++ gidentd-0.4.5+dfsg1/debian/gidentd.preinst
@@ -3,8 +3,8 @@
 set -e
 
 if [ "$1" = "upgrade" ]; then
-  /usr/sbin/update-inetd --disable auth
-  /usr/sbin/update-inetd --remove 'auth    stream  tcp     nowait.400      
root /usr/sbin/tcpd /usr/sbin/gidentd -i'
+  update-inetd --disable auth
+  update-inetd --remove 'auth    stream  tcp     nowait.400      root 
/usr/sbin/tcpd /usr/sbin/gidentd -i'
 
   invoke-rc.d gidentd stop > /dev/null 2>&1
   update-rc.d -f gidentd remove >/dev/null 2>&1
diff -u gidentd-0.4.5+dfsg1/debian/copyright 
gidentd-0.4.5+dfsg1/debian/copyright
--- gidentd-0.4.5+dfsg1/debian/copyright
+++ gidentd-0.4.5+dfsg1/debian/copyright
@@ -27,407 +27,8 @@
-can be found in `/usr/share/common-licenses/GPL'.
+can be found in “/usr/share/common-licenses/GPL-2”.
 
 ========================================================================
 
 The gidentd manpage is distributed under the terms of the 
 GNU Free Documentation License, with not Front-Covers Texts and no 
-Back-Covers Texts. The full text of the license follows.
-
-________________________________________________________________________
-
-               GNU Free Documentation License
-                 Version 1.2, November 2002
-
-
- Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
-     51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
-0. PREAMBLE
-
-The purpose of this License is to make a manual, textbook, or other
-functional and useful document "free" in the sense of freedom: to
-assure everyone the effective freedom to copy and redistribute it,
-with or without modifying it, either commercially or noncommercially.
-Secondarily, this License preserves for the author and publisher a way
-to get credit for their work, while not being considered responsible
-for modifications made by others.
-
-This License is a kind of "copyleft", which means that derivative
-works of the document must themselves be free in the same sense.  It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does.  But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book.  We recommend this License
-principally for works whose purpose is instruction or reference.
-
-
-1. APPLICABILITY AND DEFINITIONS
-
-This License applies to any manual or other work, in any medium, that
-contains a notice placed by the copyright holder saying it can be
-distributed under the terms of this License.  Such a notice grants a
-world-wide, royalty-free license, unlimited in duration, to use that
-work under the conditions stated herein.  The "Document", below,
-refers to any such manual or work.  Any member of the public is a
-licensee, and is addressed as "you".  You accept the license if you
-copy, modify or distribute the work in a way requiring permission
-under copyright law.
-
-A "Modified Version" of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-A "Secondary Section" is a named appendix or a front-matter section of
-the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall subject
-(or to related matters) and contains nothing that could fall directly
-within that overall subject.  (Thus, if the Document is in part a
-textbook of mathematics, a Secondary Section may not explain any
-mathematics.)  The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-The "Invariant Sections" are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.  If a
-section does not fit the above definition of Secondary then it is not
-allowed to be designated as Invariant.  The Document may contain zero
-Invariant Sections.  If the Document does not identify any Invariant
-Sections then there are none.
-
-The "Cover Texts" are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.  A Front-Cover Text may
-be at most 5 words, and a Back-Cover Text may be at most 25 words.
-
-A "Transparent" copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, that is suitable for revising the document
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters.  A copy made in an otherwise Transparent file
-format whose markup, or absence of markup, has been arranged to thwart
-or discourage subsequent modification by readers is not Transparent.
-An image format is not Transparent if used for any substantial amount
-of text.  A copy that is not "Transparent" is called "Opaque".
-
-Examples of suitable formats for Transparent copies include plain
-ASCII without markup, Texinfo input format, LaTeX input format, SGML
-or XML using a publicly available DTD, and standard-conforming simple
-HTML, PostScript or PDF designed for human modification.  Examples of
-transparent image formats include PNG, XCF and JPG.  Opaque formats
-include proprietary formats that can be read and edited only by
-proprietary word processors, SGML or XML for which the DTD and/or
-processing tools are not generally available, and the
-machine-generated HTML, PostScript or PDF produced by some word
-processors for output purposes only.
-
-The "Title Page" means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, "Title Page" means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
-A section "Entitled XYZ" means a named subunit of the Document whose
-title either is precisely XYZ or contains XYZ in parentheses following
-text that translates XYZ in another language.  (Here XYZ stands for a
-specific section name mentioned below, such as "Acknowledgements",
-"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
-of such a section when you modify the Document means that it remains a
-section "Entitled XYZ" according to this definition.
-
-The Document may include Warranty Disclaimers next to the notice which
-states that this License applies to the Document.  These Warranty
-Disclaimers are considered to be included by reference in this
-License, but only as regards disclaiming warranties: any other
-implication that these Warranty Disclaimers may have is void and has
-no effect on the meaning of this License.
-
-
-2. VERBATIM COPYING
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License.  You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute.  However, you may accept
-compensation in exchange for copies.  If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
-
-3. COPYING IN QUANTITY
-
-If you publish printed copies (or copies in media that commonly have
-printed covers) of the Document, numbering more than 100, and the
-Document's license notice requires Cover Texts, you must enclose the
-copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover.  Both covers must also clearly and legibly identify
-you as the publisher of these copies.  The front cover must present
-the full title with all words of the title equally prominent and
-visible.  You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a computer-network location from which the general network-using
-public has access to download using public-standard network protocols
-a complete Transparent copy of the Document, free of added material.
-If you use the latter option, you must take reasonably prudent steps,
-when you begin distribution of Opaque copies in quantity, to ensure
-that this Transparent copy will remain thus accessible at the stated
-location until at least one year after the last time you distribute an
-Opaque copy (directly or through your agents or retailers) of that
-edition to the public.
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
-
-4. MODIFICATIONS
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it.  In addition, you must do these things in the Modified Version:
-
-A. Use in the Title Page (and on the covers, if any) a title distinct
-   from that of the Document, and from those of previous versions
-   (which should, if there were any, be listed in the History section
-   of the Document).  You may use the same title as a previous version
-   if the original publisher of that version gives permission.
-B. List on the Title Page, as authors, one or more persons or entities
-   responsible for authorship of the modifications in the Modified
-   Version, together with at least five of the principal authors of the
-   Document (all of its principal authors, if it has fewer than five),
-   unless they release you from this requirement.
-C. State on the Title page the name of the publisher of the
-   Modified Version, as the publisher.
-D. Preserve all the copyright notices of the Document.
-E. Add an appropriate copyright notice for your modifications
-   adjacent to the other copyright notices.
-F. Include, immediately after the copyright notices, a license notice
-   giving the public permission to use the Modified Version under the
-   terms of this License, in the form shown in the Addendum below.
-G. Preserve in that license notice the full lists of Invariant Sections
-   and required Cover Texts given in the Document's license notice.
-H. Include an unaltered copy of this License.
-I. Preserve the section Entitled "History", Preserve its Title, and add
-   to it an item stating at least the title, year, new authors, and
-   publisher of the Modified Version as given on the Title Page.  If
-   there is no section Entitled "History" in the Document, create one
-   stating the title, year, authors, and publisher of the Document as
-   given on its Title Page, then add an item describing the Modified
-   Version as stated in the previous sentence.
-J. Preserve the network location, if any, given in the Document for
-   public access to a Transparent copy of the Document, and likewise
-   the network locations given in the Document for previous versions
-   it was based on.  These may be placed in the "History" section.
-   You may omit a network location for a work that was published at
-   least four years before the Document itself, or if the original
-   publisher of the version it refers to gives permission.
-K. For any section Entitled "Acknowledgements" or "Dedications",
-   Preserve the Title of the section, and preserve in the section all
-   the substance and tone of each of the contributor acknowledgements
-   and/or dedications given therein.
-L. Preserve all the Invariant Sections of the Document,
-   unaltered in their text and in their titles.  Section numbers
-   or the equivalent are not considered part of the section titles.
-M. Delete any section Entitled "Endorsements".  Such a section
-   may not be included in the Modified Version.
-N. Do not retitle any existing section to be Entitled "Endorsements"
-   or to conflict in title with any Invariant Section.
-O. Preserve any Warranty Disclaimers.
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant.  To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-You may add a section Entitled "Endorsements", provided it contains
-nothing but endorsements of your Modified Version by various
-parties--for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version.  Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity.  If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
-
-5. COMBINING DOCUMENTS
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice, and that you preserve all their Warranty Disclaimers.
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy.  If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-In the combination, you must combine any sections Entitled "History"
-in the various original documents, forming one section Entitled
-"History"; likewise combine any sections Entitled "Acknowledgements",
-and any sections Entitled "Dedications".  You must delete all sections
-Entitled "Endorsements".
-
-
-6. COLLECTIONS OF DOCUMENTS
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
-
-7. AGGREGATION WITH INDEPENDENT WORKS
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, is called an "aggregate" if the copyright
-resulting from the compilation is not used to limit the legal rights
-of the compilation's users beyond what the individual works permit.
-When the Document is included in an aggregate, this License does not
-apply to the other works in the aggregate which are not themselves
-derivative works of the Document.
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one half of
-the entire aggregate, the Document's Cover Texts may be placed on
-covers that bracket the Document within the aggregate, or the
-electronic equivalent of covers if the Document is in electronic form.
-Otherwise they must appear on printed covers that bracket the whole
-aggregate.
-
-
-8. TRANSLATION
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License, and all the license notices in the
-Document, and any Warranty Disclaimers, provided that you also include
-the original English version of this License and the original versions
-of those notices and disclaimers.  In case of a disagreement between
-the translation and the original version of this License or a notice
-or disclaimer, the original version will prevail.
-
-If a section in the Document is Entitled "Acknowledgements",
-"Dedications", or "History", the requirement (section 4) to Preserve
-its Title (section 1) will typically require changing the actual
-title.
-
-
-9. TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License.  Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License.  However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-
-10. FUTURE REVISIONS OF THIS LICENSE
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time.  Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.  See
-http://www.gnu.org/copyleft/.
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License "or any later version" applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation.  If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
-
-
-ADDENDUM: How to use this License for your documents
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-
-    Copyright (c)  YEAR  YOUR NAME.
-    Permission is granted to copy, distribute and/or modify this document
-    under the terms of the GNU Free Documentation License, Version 1.2
-    or any later version published by the Free Software Foundation;
-    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-    A copy of the license is included in the section entitled "GNU
-    Free Documentation License".
-
-If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the "with...Texts." line with this:
-
-    with the Invariant Sections being LIST THEIR TITLES, with the
-    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
-
-If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License,
-to permit their use in free software.
+Back-Covers Texts. The full text of the license can be found on
+Debian systems in “/usr/share/common-licenses/GFDL-1.2”.
diff -u gidentd-0.4.5+dfsg1/debian/patches/00list 
gidentd-0.4.5+dfsg1/debian/patches/00list
--- gidentd-0.4.5+dfsg1/debian/patches/00list
+++ gidentd-0.4.5+dfsg1/debian/patches/00list
@@ -3,0 +4 @@
+04_562647.dpatch
only in patch2:
unchanged:
--- gidentd-0.4.5+dfsg1.orig/debian/README.source
+++ gidentd-0.4.5+dfsg1/debian/README.source
@@ -0,0 +1 @@
+See /usr/share/doc/dpatch/README.source.gz
only in patch2:
unchanged:
--- gidentd-0.4.5+dfsg1.orig/debian/watch
+++ gidentd-0.4.5+dfsg1/debian/watch
@@ -0,0 +1 @@
+# http://gidentd.neveragain.de/ is unavailable :(
only in patch2:
unchanged:
--- gidentd-0.4.5+dfsg1.orig/debian/compat
+++ gidentd-0.4.5+dfsg1/debian/compat
@@ -0,0 +1 @@
+5
only in patch2:
unchanged:
--- gidentd-0.4.5+dfsg1.orig/debian/patches/04_562647.dpatch
+++ gidentd-0.4.5+dfsg1/debian/patches/04_562647.dpatch
@@ -0,0 +1,327 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 562647.dpatch by  Thorsten Glaser <t...@mirbsd.de>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Overhaup IPv4/IPv6 handling
+
+if [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch) patch -f --no-backup-if-mismatch -p1 < $0;;
+    -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+    *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1;;
+esac
+
+exit 0
+
+diff -pruN gidentd-0.4.5+dfsg1.prepatch/config.c 
gidentd-0.4.5+dfsg1.postpatch/config.c
+--- gidentd-0.4.5+dfsg1.prepatch/config.c      2009-12-31 21:36:19.000000000 
+0000
++++ gidentd-0.4.5+dfsg1.postpatch/config.c     2009-12-31 22:12:49.000000000 
+0000
+@@ -15,15 +15,15 @@ static void defaultconfig(void)
+       config.logfile="/var/log/gidentd.log";
+       config.pidfile="/var/run/gidentd.pid";
+       config.port=113;
+-      config.forcev4=0;
++      config.forceproto=0;
+       config.inetd=0;
+ }
+ 
+ static void display_help(char *prog)
+ {
+       printf("Usage: %s [-46adhi] [-c configfile] [-l logfile] [-p port]\n", 
prog);
+-      printf("-4 --ipv4               : do not use ipv6\n");
+-      printf("-6 --ipv6               : use ipv6 if available, fallback to 
ipv4\n");
++      printf("-4 --ipv4               : use IPv4 only, do not use IPv6\n");
++      printf("-6 --ipv6               : use IPv6 only, do not use IPv4\n");
+       printf("-a --auto               : auto detect inetd\n");
+       printf("-c --config <file>      : use configfile <file>\n");
+       printf("-d --daemon             : force daemon mode\n");
+@@ -60,11 +60,11 @@ void GetConfig(int argc, char **argv)
+       while((c=getopt_long(argc, argv, "46acdhil:P:p:", long_options, 
&option_index))>=0) {
+               switch(c) {
+               case '4':
+-                      config.forcev4=1;
++                      config.forceproto=4;
+                       break;
+ 
+               case '6':
+-                      config.forcev4=0;
++                      config.forceproto=6;
+                       break;
+ 
+               case 'a':
+diff -pruN gidentd-0.4.5+dfsg1.prepatch/config.h 
gidentd-0.4.5+dfsg1.postpatch/config.h
+--- gidentd-0.4.5+dfsg1.prepatch/config.h      2009-12-31 21:36:19.000000000 
+0000
++++ gidentd-0.4.5+dfsg1.postpatch/config.h     2009-12-31 22:12:49.000000000 
+0000
+@@ -2,7 +2,7 @@ typedef struct {
+       char *logfile;
+       char *pidfile;
+       int port;
+-      int forcev4;
++      int forceproto;
+       int inetd; // 0: auto  1: inetd  2: daemon
+ } IdentdConf;
+ extern IdentdConf config;
+diff -pruN gidentd-0.4.5+dfsg1.prepatch/gidentd.c 
gidentd-0.4.5+dfsg1.postpatch/gidentd.c
+--- gidentd-0.4.5+dfsg1.prepatch/gidentd.c     2009-12-31 21:36:19.000000000 
+0000
++++ gidentd-0.4.5+dfsg1.postpatch/gidentd.c    2009-12-31 22:12:49.000000000 
+0000
+@@ -47,7 +47,7 @@ int main(int argc, char **argv)
+       } else {
+               Log("gidentd v%s started in daemon mode.", VERSION);
+               BgProcess(); // close open files && become daemon
+-              OpenListenSock(config.port, config.forcev4); // open listening 
sock
++              OpenListenSock(config.port, config.forceproto); // open 
listening sock
+  
+               if (open_proc_files() < 0)
+                       return 1;
+diff -pruN gidentd-0.4.5+dfsg1.prepatch/request.c 
gidentd-0.4.5+dfsg1.postpatch/request.c
+--- gidentd-0.4.5+dfsg1.prepatch/request.c     2009-12-31 21:36:19.000000000 
+0000
++++ gidentd-0.4.5+dfsg1.postpatch/request.c    2009-12-31 22:19:46.000000000 
+0000
+@@ -1,3 +1,4 @@
++#include <string.h>
+ #include "parse.h"
+ #include "socket.h"
+ #include "request.h"
+@@ -15,7 +16,7 @@ int Handle_Request(char *line)
+               return(-1);
+       }
+               
+-      switch(ipversion) {
++      switch(ipversion_child) {
+       case 4:
+               req.uid=tcp4();
+               break;
+diff -pruN gidentd-0.4.5+dfsg1.prepatch/socket.c 
gidentd-0.4.5+dfsg1.postpatch/socket.c
+--- gidentd-0.4.5+dfsg1.prepatch/socket.c      2009-12-31 21:36:19.000000000 
+0000
++++ gidentd-0.4.5+dfsg1.postpatch/socket.c     2009-12-31 22:23:47.000000000 
+0000
+@@ -9,6 +9,7 @@
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <errno.h>
++#include <poll.h>
+ #include <string.h>
+ 
+ #include "log.h"
+@@ -17,11 +18,15 @@
+ 
+ #define TIMEOUT 120
+ 
++#ifndef INFTIM
++#define INFTIM (-1)
++#endif
++
+ int inetd;
+-int ipversion;
++int ipversion_child;
+ Conn_Struct conn;
+ 
+-static int s;
++static int s, s4 = -1, s6 = -1;
+ 
+ void SetInetdSocket()
+ {
+@@ -31,42 +36,75 @@ void SetInetdSocket()
+ 
+ int NewConn(void)
+ {
+-      struct sockaddr_in6 sa;
+-      socklen_t slt=sizeof(sa);
+-      int s2;
++      union {
++              struct sockaddr sa;
++              struct sockaddr_in sin;
++              struct sockaddr_in6 sin6;
++      } su;
++      socklen_t slt=sizeof(su);
++      int s0, s2, ipversion;
+       char rmt[40], loc[40];
+       
+       if(inetd) {
+-              if(getpeername(s, (struct sockaddr *)&sa, &slt))
++              if(getpeername(s, &su.sa, &slt))
+                       LogError("getpeername");
+-              ipversion=((struct sockaddr *)&sa)->sa_family==AF_INET?4:6;
++              ipversion=su.sa.sa_family==AF_INET?4:6;
+       } else {
+-              if((s2=accept(s, (struct sockaddr *)&sa, &slt))<0)
++              if (s4 != -1 && s6 != -1) {
++                      struct pollfd pfds[2];
++                      int i;
++
++                      pfds[0].fd = s4;
++                      pfds[1].fd = s6;
++                      pfds[0].events = POLLIN;
++                      pfds[1].events = POLLIN;
++
++                      for (;;) {
++                              if (poll(pfds, 2, INFTIM) < 0) {
++                                      if (errno == EINTR || errno == EAGAIN)
++                                              continue;
++                                      LogError("poll");
++                              }
++                              for (i = 0; i < 2; ++i)
++                                      if (pfds[i].revents & POLLIN) {
++                                              s0 = pfds[i].fd;
++                                              break;
++                                      }
++                      }
++              } else
++                      s0 = s4 == -1 ? s6 : s4;
++
++              ipversion = s0 == s4 ? 4 : 6;
++              if((s2=accept(s0, &su.sa, &slt))<0)
+                       LogError("accept");
+               if(fork()) {
+                       close(s2);
+                       return(1);
+               }
+-              close(s);
++              if (s4 != -1)
++                      close(s4);
++              if (s6 != -1)
++                      close(s6);
+               s=s2;
++              ipversion_child = ipversion;
+       }
+       if(ipversion==6) {
+-              conn.rh=sa.sin6_addr;
+-              conn.rp=htons(sa.sin6_port);
++              conn.rh=su.sin6.sin6_addr;
++              conn.rp=htons(su.sin6.sin6_port);
+       } else {
+-              conn.rh.s6_addr32[3]=((struct sockaddr_in 
*)&sa)->sin_addr.s_addr;
+-              conn.rp=htons(((struct sockaddr_in *)&sa)->sin_port);
++              conn.rh.s6_addr32[3]=su.sin.sin_addr.s_addr;
++              conn.rp=htons(su.sin.sin_port);
+       }
+       
+-      if(getsockname(s, (struct sockaddr *)&sa, &slt))
++      if(getsockname(s, &su.sa, &slt))
+               LogError("getsockname");
+ 
+       if(ipversion==6) {
+-              conn.lh=sa.sin6_addr;
+-              conn.lp=htons(sa.sin6_port);
++              conn.lh=su.sin6.sin6_addr;
++              conn.lp=htons(su.sin6.sin6_port);
+       } else {
+-              conn.lh.s6_addr32[3]=((struct sockaddr_in 
*)&sa)->sin_addr.s_addr;
+-              conn.lp=htons(((struct sockaddr_in *)&sa)->sin_port);
++              conn.lh.s6_addr32[3]=su.sin.sin_addr.s_addr;
++              conn.lp=htons(su.sin.sin_port);
+       }
+       
+       // Log
+@@ -76,7 +114,7 @@ int NewConn(void)
+       return(0);
+ }
+ 
+-static void BindListen(int port)
++static void BindListen(int port, int ipversion)
+ {
+       socklen_t slt;
+       struct sockaddr *sa;
+@@ -100,39 +138,48 @@ static void BindListen(int port)
+       }
+       
+       
+-      if(bind(s, sa, slt))
++      if(bind(ipversion==4?s4:s6, sa, slt))
+               LogError("bind");
+-      if(listen(s,3))
++      if(listen(ipversion==4?s4:s6,3))
+               LogError("listen");
+       Log("Using IPv%i", ipversion);
+ }
+ 
+-void OpenListenSock(int port, int forcev4)
++void OpenListenSock(int port, int forceproto)
+ {
+       int one=1;
+-      
+-      if (!forcev4) {
+-              if((s = socket(PF_INET6, SOCK_STREAM, 0)) < 0) { 
++
++      if (forceproto != 4) {
++              if((s6 = socket(PF_INET6, SOCK_STREAM, 0)) < 0) { 
+                       if(errno!=EAFNOSUPPORT)
+                               LogError("socket");
+                       else
+                               Log("IPv6 not available");
+               } else {
+-                      
if(setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&one,sizeof(one)))
++                      
if(setsockopt(s6,SOL_SOCKET,SO_REUSEADDR,&one,sizeof(one)))
+                               LogError("setsockopt");
+-                      ipversion=6;
+-                      return(BindListen(port));
++#if defined(IPPROTO_IPV6) && defined(IPV6_V6ONLY)
++                      
if(setsockopt(s6,IPPROTO_IPV6,IPV6_V6ONLY,&one,sizeof(one)))
++                              LogError("setsockopt");
++#endif
++                      BindListen(port, 6);
+               }
+       }
+       
+-      if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0)
+-              LogError("socket");
+-      
+-      if(setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&one,sizeof(one)))
+-              LogError("setsockopt");
++      if (forceproto != 6) {
++              if ((s4 = socket(PF_INET, SOCK_STREAM, 0)) < 0)
++                      LogError("socket");
++              
++              if(setsockopt(s4,SOL_SOCKET,SO_REUSEADDR,&one,sizeof(one)))
++                      LogError("setsockopt");
++
++              BindListen(port, 4);
++      }
+ 
+-      ipversion=4;
+-      return(BindListen(port));
++      if (s4 == -1 && s6 == -1) {
++              Log("No listen socket available");
++              exit(1);
++      }
+ }
+ 
+ char *ReadLine(void)
+diff -pruN gidentd-0.4.5+dfsg1.prepatch/socket.h 
gidentd-0.4.5+dfsg1.postpatch/socket.h
+--- gidentd-0.4.5+dfsg1.prepatch/socket.h      2009-12-31 21:36:19.000000000 
+0000
++++ gidentd-0.4.5+dfsg1.postpatch/socket.h     2009-12-31 22:18:41.000000000 
+0000
+@@ -1,8 +1,8 @@
+ #include <netinet/in.h>
+ 
+-extern int ipversion;
++extern int ipversion_child;
+ extern int inetd;
+-void OpenListenSock(int port, int forcev4);
++void OpenListenSock(int port, int forceproto);
+ char *ReadLine(void);
+ void SetInetdSocket();
+ int NewConn(void);
+diff -pruN gidentd-0.4.5+dfsg1.prepatch/system.c 
gidentd-0.4.5+dfsg1.postpatch/system.c
+--- gidentd-0.4.5+dfsg1.prepatch/system.c      2009-12-31 21:36:19.000000000 
+0000
++++ gidentd-0.4.5+dfsg1.postpatch/system.c     2009-12-31 22:12:49.000000000 
+0000
+@@ -88,6 +88,9 @@ void BgProcess(void)
+ // signal handler
+ static void sighandler(int s)
+ {
++      int e;
++
++      e = errno;
+       switch(s) {
+               case SIGCHLD:
+                       while(waitpid(-1, NULL, WNOHANG)>0);
+@@ -96,6 +99,7 @@ static void sighandler(int s)
+                       Log("received SIGTERM, exiting");
+                       exit(0);
+       }
++      errno = e;
+ }
+ 
+ // install signal handler for signal sig

Reply via email to