rfc1413.c revision ce121a776564df6bb75498209094142d92404b8a
* 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * 4. The names "Apache" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact apache@apache.org. * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * ==================================================================== * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * Portions of this software are based upon public domain software * originally written at the National Center for Supercomputing Applications, * University of Illinois, Urbana-Champaign. /* TODO - put timeouts back in */ * rfc1413() speaks a common subset of the RFC 1413, AUTH, TAP and IDENT * protocols. The code queries an RFC 1413 etc. compatible daemon on a remote * host to look up the owner of a connection. The information should not be * used for authentication purposes. This routine intercepts alarm signals. * Diagnostics are reported through syslog(3). * Author: Wietse Venema, Eindhoven University of Technology, /* Some small additions for Apache --- ditch the "sccsid" var if * compiling with gcc (it *has* changed), include ap_config.h for the * prototypes it defines on at least one system (SunlOSs) which has * them missing from the standard header files, and one minor change * below (extra parens around assign "if (foo = bar) ..." to shut up /* Rewritten by David Robinson */ #
include "httpd.h" /* for server_rec, conn_rec, etc. *//* Semi-well-known port */ /* maximum allowed length of userid */ /* rough limit on the amount of data we accept. */ /* This should not fail since we have a numeric address string "rfc1413: apr_getaddrinfo(%s) failed",
/* This should not fail since we have a numeric address string "rfc1413: apr_getaddrinfo(%s) failed",
"rfc1413: error creating query socket");
"rfc1413: error setting query socket timeout");
* Bind the local and remote ends of the query socket to the same * IP addresses as the connection under investigation. We go * through all this trouble because the local or remote system * might have more than one network address. The RFC1413 etc. * client sends only port numbers; the server takes the IP * addresses from the query socket. "rfc1413: Error binding query socket to local port");
* errors from connect usually imply the remote machine doesn't support * the service; don't log such an error /* send query to server. Handle short write. */ "write: rfc1413: error sending request");
* Read response from server. - the response should be newline * terminated according to rfc - make sure it doesn't stomp its * Note that the strchr function below checks for \012 instead of '\n' * this allows it to work on both ASCII and EBCDIC machines. "read: rfc1413: error reading response");
/* Oops... we ran out of data before finding newline */ /* RFC1413_USERLEN = 512 */ * Strip trailing carriage return. It is part of the * protocol, not part of the data.