~ubuntu-branches/debian/sid/rlinetd/sid

« back to all changes in this revision

Viewing changes to connect.c

  • Committer: Bazaar Package Importer
  • Author(s): Robert Luberda
  • Date: 2010-03-20 18:03:45 UTC
  • mfrom: (2.3.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20100320180345-x1srfbe2tg00ezsf
Tags: 0.7-1
* New upstream version.
* Recommend rsyslog instead of sysklogd (closes: #526922).
* update-inetd:
  + add support for enabling, disabling and removing entries;
  + use ucf for managing generated files;
  + ignore ucf files in rlinetd.conf;
  + make appropriate changes in  postinst and postrm scripts.
* Set debhelper compat level to 7
* Standards-Version: 3.8.4 (no changes). 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include <errno.h>
2
 
#include <fcntl.h>
3
 
#include <netinet/in.h>
4
 
#include <string.h>
5
 
#include <sys/socket.h>
6
 
 
7
 
#include "error.h"
8
 
#include "rlinetd.h"
9
 
 
10
 
int rl_connect(struct rl_instance *inst, int family, int type,
11
 
                                                         int proto, struct sockaddr *saddr, int saddrlen,
12
 
                                                         struct sockaddr *daddr, int daddrlen)
13
 
{
14
 
        int fd, ret;
15
 
        long opt = 1;
16
 
 
17
 
        fd = socket(family, type, proto);
18
 
        if(fd < 0)
19
 
                return fd;
20
 
        if(fcntl(fd, F_SETFL, O_NDELAY)) {
21
 
                rl_warn("fcntl(%d, F_SETFL, O_NDELAY): %s",     fd, strerror(errno));
22
 
                close(fd);
23
 
                return -1;
24
 
        }
25
 
        if(saddr) {
26
 
                if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)))
27
 
                        rl_warn("setsockopt(%d, SOL_SOCKET, SO_REUSEADDR, 1): %s",
28
 
                                                        fd, strerror(errno));
29
 
                if(bind(fd, saddr, saddrlen))
30
 
                        rl_warn("bind(): %s", strerror(errno));
31
 
        }
32
 
        if((ret = connect(fd, daddr, daddrlen)) && (ret != EINPROGRESS)) {
33
 
                rl_warn("connect(): %s", strerror(errno));
34
 
                close(fd);
35
 
                return -1;
36
 
        }
37
 
        return 0;
38
 
}
39
 
 
40
 
/* vim: set ts=2: */