X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/1be9101e4d2cfd1aed5249b0cdf126d747095ce8..92db088e5b292c1180a090ed369b9851e933e610:/lib/client.c diff --git a/lib/client.c b/lib/client.c index 55cfe1c..08d70e7 100644 --- a/lib/client.c +++ b/lib/client.c @@ -1,6 +1,6 @@ /* * This file is part of DisOrder. - * Copyright (C) 2004-2010 Richard Kettlewell + * Copyright (C) 2004-13 Richard Kettlewell * * 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 @@ -25,13 +25,25 @@ #include "common.h" #include -#include -#include -#include -#include +#if HAVE_SYS_SOCKET_H +# include +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_UNISTD_H +# include +#endif #include -#include -#include +#if HAVE_NETDB_H +# include +#endif +#if HAVE_PCRE_H +# include +#endif #include "log.h" #include "mem.h" @@ -66,6 +78,8 @@ struct disorder_client { int verbose; /** @brief Last error string */ const char *last; + /** @brief Address family */ + int family; }; /** @brief Create a new client @@ -80,9 +94,15 @@ disorder_client *disorder_new(int verbose) { disorder_client *c = xmalloc(sizeof (struct disorder_client)); c->verbose = verbose; + c->family = -1; return c; } +/** @brief Return the address family used by this client */ +int disorder_client_af(disorder_client *c) { + return c->family; +} + /** @brief Read a response line * @param c Client * @param rp Where to store response, or NULL (UTF-8) @@ -407,6 +427,7 @@ int disorder_connect_generic(struct config *conf, disorder_error(errno, "error calling socket"); return -1; } + c->family = sa->sa_family; if(connect(fd, sa, salen) < 0) { byte_xasprintf((char **)&c->last, "connect: %s", strerror(errno)); disorder_error(errno, "error calling connect");