~ubuntu-branches/ubuntu/hardy/nfs-utils/hardy-updates

« back to all changes in this revision

Viewing changes to utils/mountd/svc_run.c

  • Committer: Bazaar Package Importer
  • Author(s): Nathaniel McCallum
  • Date: 2004-09-10 13:10:39 UTC
  • Revision ID: james.westby@ubuntu.com-20040910131039-qxfjx4pwgoz6imbv
Tags: upstream-1.0.6
ImportĀ upstreamĀ versionĀ 1.0.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 1984 Sun Microsystems, Inc.
 
3
 * Based on svc_run.c from statd which claimed:
 
4
 * Modified by Jeffrey A. Uphoff, 1995, 1997-1999.
 
5
 * Modified by Olaf Kirch, 1996.
 
6
 *
 
7
 */
 
8
 
 
9
/* 
 
10
 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
 
11
 * unrestricted use provided that this legend is included on all tape
 
12
 * media and as a part of the software program in whole or part.  Users
 
13
 * may copy or modify Sun RPC without charge, but are not authorized
 
14
 * to license or distribute it to anyone else except as part of a product or
 
15
 * program developed by the user.
 
16
 * 
 
17
 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
 
18
 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
 
19
 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
 
20
 * 
 
21
 * Sun RPC is provided with no support and without any obligation on the
 
22
 * part of Sun Microsystems, Inc. to assist in its use, correction,
 
23
 * modification or enhancement.
 
24
 * 
 
25
 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
 
26
 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
 
27
 * OR ANY PART THEREOF.
 
28
 * 
 
29
 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
 
30
 * or profits or other special, indirect and consequential damages, even if
 
31
 * Sun has been advised of the possibility of such damages.
 
32
 * 
 
33
 * Sun Microsystems, Inc.
 
34
 * 2550 Garcia Avenue
 
35
 * Mountain View, California  94043
 
36
 */
 
37
 
 
38
/* 
 
39
 * Allow svc_run to listen to other file descriptors as well
 
40
 */
 
41
 
 
42
/* 
 
43
 * This is the RPC server side idle loop.
 
44
 * Wait for input, call server program.
 
45
 */
 
46
#include "config.h"
 
47
#include <sys/types.h>
 
48
#include <rpc/rpc.h>
 
49
#include "xlog.h"
 
50
#include <errno.h>
 
51
#include <time.h>
 
52
 
 
53
void cache_set_fds(fd_set *fdset);
 
54
int cache_process_req(fd_set *readfds);
 
55
 
 
56
 
 
57
/*
 
58
 * The heart of the server.  A crib from libc for the most part...
 
59
 */
 
60
void
 
61
my_svc_run(void)
 
62
{
 
63
        fd_set  readfds;
 
64
        int     selret;
 
65
 
 
66
        for (;;) {
 
67
 
 
68
                readfds = svc_fdset;
 
69
                cache_set_fds(&readfds);
 
70
 
 
71
                selret = select(FD_SETSIZE, &readfds,
 
72
                                (void *) 0, (void *) 0, (struct timeval *) 0);
 
73
 
 
74
 
 
75
                switch (selret) {
 
76
                case -1:
 
77
                        if (errno == EINTR || errno == ECONNREFUSED
 
78
                         || errno == ENETUNREACH || errno == EHOSTUNREACH)
 
79
                                continue;
 
80
                        xlog(L_ERROR, "my_svc_run() - select: %m");
 
81
                        return;
 
82
 
 
83
                default:
 
84
                        selret -= cache_process_req(&readfds);
 
85
                        if (selret)
 
86
                                svc_getreqset(&readfds);
 
87
                }
 
88
        }
 
89
}