~ubuntu-branches/ubuntu/edgy/lighttpd/edgy

« back to all changes in this revision

Viewing changes to src/network.c

  • Committer: Bazaar Package Importer
  • Author(s): Krzysztof Krzyzaniak (eloy)
  • Date: 2006-01-16 20:06:39 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060116200639-0221dvlzvs5dxmgd
Tags: 1.4.9-1
* New upstream release
* Closing bug from not uploaded release 1.4.8-5, (closes: #347737)

Show diffs side-by-side

added added

removed removed

Lines of Context:
71
71
        const char *host;
72
72
        buffer *b;
73
73
        int is_unix_domain_socket = 0;
 
74
        int fd;
74
75
        
75
76
#ifdef SO_ACCEPTFILTER
76
77
        struct accept_filter_arg afa;
254
255
                addr_len = strlen(host) + sizeof(srv_socket->addr.un.sun_family);
255
256
#endif
256
257
 
 
258
                /* check if the socket exists and try to connect to it. */
 
259
                if (-1 != (fd = connect(srv_socket->fd, (struct sockaddr *) &(srv_socket->addr), addr_len))) {
 
260
                        close(fd);
 
261
 
 
262
                        log_error_write(srv, __FILE__, __LINE__, "ss", 
 
263
                                "server socket is still in use:", 
 
264
                                host);
 
265
 
 
266
 
 
267
                        return -1;
 
268
                }
 
269
 
 
270
                /* connect failed */
 
271
                switch(errno) {
 
272
                case ECONNREFUSED:
 
273
                        unlink(host);
 
274
                        break;
 
275
                case ENOENT:
 
276
                        break;
 
277
                default:
 
278
                        log_error_write(srv, __FILE__, __LINE__, "sds", 
 
279
                                "testing socket failed:", 
 
280
                                host, strerror(errno));
 
281
 
 
282
                        return -1;
 
283
                }
 
284
 
257
285
                break;
258
286
        default:
259
287
                addr_len = 0;
262
290
        }
263
291
        
264
292
        if (0 != bind(srv_socket->fd, (struct sockaddr *) &(srv_socket->addr), addr_len)) {
265
 
                log_error_write(srv, __FILE__, __LINE__, "sds", "can't bind to port", port, strerror(errno));
 
293
                switch(srv_socket->addr.plain.sa_family) {
 
294
                case AF_UNIX:
 
295
                        log_error_write(srv, __FILE__, __LINE__, "sds", 
 
296
                                        "can't bind to socket:", 
 
297
                                        host, strerror(errno));
 
298
                        break;
 
299
                default:
 
300
                        log_error_write(srv, __FILE__, __LINE__, "ssds", 
 
301
                                        "can't bind to port:", 
 
302
                                        host, port, strerror(errno));
 
303
                        break;
 
304
                }
266
305
                return -1;
267
306
        }
268
307