~ubuntu-branches/debian/wheezy/netatalk/wheezy

« back to all changes in this revision

Viewing changes to libatalk/cnid/dbd/cnid_dbd.c

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Smedegaard
  • Date: 2010-06-23 20:08:29 UTC
  • mfrom: (1.1.8 upstream)
  • Revision ID: james.westby@ubuntu.com-20100623200829-6uu89cgtwx726sa8
Tags: 2.1.2-1
* New upstream release.
* Refresh patch 205.
* Tighten reinstall-initscript-quirk: upstream no longer double-
  expands DESTDIR.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * $Id: cnid_dbd.c,v 1.17 2010/03/31 09:47:32 franklahm Exp $
 
2
 * $Id: cnid_dbd.c,v 1.17 2010-03-31 09:47:32 franklahm Exp $
3
3
 *
4
4
 * Copyright (C) Joerg Lenneis 2003
5
5
 * All Rights Reserved.  See COPYING.
52
52
}
53
53
 
54
54
/* ----------- */
55
 
#define MAX_DELAY 40
 
55
#define MAX_DELAY 10
56
56
 
57
57
/* *MUST* be < afp tickle or it's never triggered (got EINTR first) */
58
58
#define SOCK_DELAY 11
81
81
    hints.ai_flags = AI_NUMERICSERV;
82
82
 
83
83
    if ((err = getaddrinfo(host, port, &hints, &servinfo)) != 0) {
84
 
        LOG(log_error, logtype_default, "tsock_getfd: getaddrinfo: %s:%s : %s\n", host, port, gai_strerror(err));
 
84
        LOG(log_error, logtype_default, "tsock_getfd: getaddrinfo: CNID server %s:%s : %s\n", host, port, gai_strerror(err));
85
85
        return -1;
86
86
    }
87
87
 
88
88
    /* loop through all the results and bind to the first we can */
89
89
    for (p = servinfo; p != NULL; p = p->ai_next) {
90
90
        if ((sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1) {
91
 
            LOG(log_info, logtype_default, "tsock_getfd: socket %s:: %s", host, strerror(errno));
 
91
            LOG(log_info, logtype_default, "tsock_getfd: socket CNID server %s:: %s", host, strerror(errno));
92
92
                continue;
93
93
        }
94
94
 
95
95
        attr = 1;
96
96
        if (setsockopt(sock, SOL_TCP, TCP_NODELAY, &attr, sizeof(attr)) == -1) {
97
 
            LOG(log_error, logtype_cnid, "getfd: set TCP_NODELAY %s: %s", host, strerror(errno));
 
97
            LOG(log_error, logtype_cnid, "getfd: set TCP_NODELAY CNID server %s: %s", host, strerror(errno));
98
98
            close(sock);
99
99
            continue;
100
100
        }
102
102
        tv.tv_sec = SOCK_DELAY;
103
103
        tv.tv_usec = 0;
104
104
        if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) < 0) {
105
 
            LOG(log_error, logtype_cnid, "getfd: set SO_RCVTIMEO %s: %s", host, strerror(errno));
 
105
            LOG(log_error, logtype_cnid, "getfd: set SO_RCVTIMEO CNID server %s: %s", host, strerror(errno));
106
106
            close(sock);
107
107
            continue;
108
108
        }
110
110
        tv.tv_sec = SOCK_DELAY;
111
111
        tv.tv_usec = 0;
112
112
        if (setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) < 0) {
113
 
            LOG(log_error, logtype_cnid, "getfd: set SO_SNDTIMEO %s: %s", host, strerror(errno));
 
113
            LOG(log_error, logtype_cnid, "getfd: set SO_SNDTIMEO CNID server %s: %s", host, strerror(errno));
114
114
            close(sock);
115
115
            continue;
116
116
        }
119
119
            err = errno;
120
120
            close(sock);
121
121
            sock=-1;
122
 
            LOG(log_error, logtype_cnid, "getfd: connect %s: %s", host, strerror(err));
 
122
            LOG(log_error, logtype_cnid, "getfd: connect CNID server %s: %s", host, strerror(err));
123
123
            continue;
124
124
        }
125
125
        
130
130
    freeaddrinfo(servinfo);
131
131
 
132
132
    if (p == NULL) {
133
 
        LOG(log_error, logtype_cnid, "tsock_getfd: no suitable network config from %s:%s", host, port);
 
133
        LOG(log_error, logtype_cnid, "tsock_getfd: no suitable network config from CNID server %s:%s", host, port);
134
134
        return -1;
135
135
    }
136
136
 
401
401
                return -1;
402
402
            }
403
403
            /* sleep a little before retry */
404
 
            delay(5);
 
404
            delay(2);
405
405
        } else {
406
406
            clean = 0; /* false... next time sleep */
407
407
            time(&orig);