aboutsummaryrefslogtreecommitdiffstats
path: root/smtpd/delivery_lmtp.c
diff options
context:
space:
mode:
authorGleb Kozyrev <gleb@gkoz.com>2013-05-06 01:05:36 +0300
committerGilles Chehade <gilles@poolp.org>2013-05-10 10:46:22 +0200
commit0329d8010faa17e3b3dec176c6a04b12a1fde49d (patch)
tree9ad0d8ae7f46b8efeaaf387da17c7942521c73b0 /smtpd/delivery_lmtp.c
parentremove builtin sqlite and ldap table backends (diff)
downloadOpenSMTPD-0329d8010faa17e3b3dec176c6a04b12a1fde49d.tar.xz
OpenSMTPD-0329d8010faa17e3b3dec176c6a04b12a1fde49d.zip
Open inet socket in a separate function
Diffstat (limited to '')
-rw-r--r--smtpd/delivery_lmtp.c38
1 files changed, 25 insertions, 13 deletions
diff --git a/smtpd/delivery_lmtp.c b/smtpd/delivery_lmtp.c
index 9772133c..ef832b49 100644
--- a/smtpd/delivery_lmtp.c
+++ b/smtpd/delivery_lmtp.c
@@ -39,6 +39,9 @@
/* mda backend */
static void delivery_lmtp_open(struct deliver *);
+static int inet_socket(char *);
+static char* lmtp_getline(FILE *);
+
struct delivery_backend delivery_backend_lmtp = {
0, delivery_lmtp_open
};
@@ -53,27 +56,18 @@ enum lmtp_state {
LMTP_BYE
};
-static char* lmtp_getline(FILE*);
-
-static void
-delivery_lmtp_open(struct deliver *deliver)
+static int
+inet_socket (char *address)
{
- char *buffer;
- char *lbuf;
- char lhloname[255];
int s, n;
- FILE *fp;
char *hostname, *servname;
struct addrinfo hints;
struct addrinfo *result0, *result;
- enum lmtp_state state = LMTP_BANNER;
- size_t len;
- servname = strchr(deliver->to, ':');
+ servname = strchr(address, ':');
*servname++ = '\0';
- hostname = deliver->to;
+ hostname = address;
s = -1;
- fp = NULL;
bzero(&hints, sizeof(hints));
hints.ai_family = PF_UNSPEC;
@@ -101,6 +95,24 @@ delivery_lmtp_open(struct deliver *deliver)
freeaddrinfo(result0);
+ return s;
+}
+
+static void
+delivery_lmtp_open(struct deliver *deliver)
+{
+ char *buffer;
+ char *lbuf;
+ char lhloname[255];
+ int s;
+ FILE *fp;
+ enum lmtp_state state = LMTP_BANNER;
+ size_t len;
+
+ fp = NULL;
+
+ s = inet_socket(deliver->to);
+
if (s == -1 || (fp = fdopen(s, "r+")) == NULL)
err(1, "couldn't establish connection");