#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)svc_tcp.c 1.21 87/08/11 Copyr 1984 Sun Micro";*/
/*static char *sccsid = "from: @(#)svc_tcp.c 2.2 88/08/01 4.0 RPCSRC";*/
-static char *rcsid = "$Id: svc_tcp.c,v 1.3.84.1 2002/10/18 21:16:15 bbraun Exp $";
+static char *rcsid = "$Id: svc_tcp.c,v 1.6 2004/06/11 16:28:07 majka Exp $";
#endif
/*
struct tcp_conn { /* kept in xprt->xp_p1 */
enum xprt_stat strm_stat;
+#ifdef __LP64__
+ uint32_t x_id;
+#else
u_long x_id;
+#endif
XDR xdrs;
char verf_body[MAX_AUTH_BYTES];
};
register SVCXPRT *xprt;
register struct tcp_rendezvous *r;
struct sockaddr_in addr;
- int len = sizeof(struct sockaddr_in);
+ unsigned int len = sizeof(struct sockaddr_in);
if (sock == RPC_ANYSOCK) {
if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
int sock;
struct tcp_rendezvous *r;
struct sockaddr_in addr;
- int len;
+ unsigned int len;
r = (struct tcp_rendezvous *)xprt->xp_p1;
again:
len = sizeof(struct sockaddr_in);
- if ((sock = accept(xprt->xp_sock, (struct sockaddr *)&addr,
- &len)) < 0) {
+ if ((sock = accept(xprt->xp_sock, (struct sockaddr *)&addr, &len)) < 0) {
if (errno == EINTR)
goto again;
return (FALSE);
register int sock = xprt->xp_sock;
fd_set readfds;
bool_t ready = FALSE;
- struct timeval delta, start, tv, tmp1, tmp2;
- delta = wait_per_try;
- gettimeofday(&start, NULL);
do
{
FD_COPY(&svc_fdset, &readfds);
FD_SET(sock, &readfds);
- tv = delta;
- switch( select(max(svc_maxfd, sock) + 1, &readfds, (fd_set*)NULL, (fd_set*)NULL, &tv) ) {
- case -1:
- if( errno != EINTR )
- goto fatal_err;
- gettimeofday(&tmp1, NULL);
- timersub(&tmp1, &start, &tmp2);
- timersub(&wait_per_try, &tmp2, &tmp1);
- if( tmp1.tv_sec < 0 || !timerisset(&tmp1) )
- goto fatal_err;
- delta = tmp1;
- continue;
- case 0:
+ if (select(max(svc_maxfd, sock) + 1, &readfds, NULL, NULL, &wait_per_try) <= 0)
+ {
+ if (errno == EINTR) continue;
goto fatal_err;
- default:
- if(!FD_ISSET(sock, &readfds)) {
- svc_getreqset(&readfds);
- gettimeofday(&tmp1, NULL);
- timersub(&tmp1, &start, &tmp2);
- timersub(&wait_per_try, &tmp2, &tmp1);
- if( tmp1.tv_sec < 0 || !timerisset(&tmp1) )
- goto fatal_err;
- delta = tmp1;
- continue;
- } else {
- ready = TRUE;
- }
}
-
+ else if (FD_ISSET(sock, &readfds))
+ {
+ ready = TRUE;
+ }
} while (!ready);
if ((len = read(sock, buf, len)) > 0) return len;
caddr_t args_ptr;
{
- return ((*xdr_args)(&(((struct tcp_conn *)(xprt->xp_p1))->xdrs), args_ptr));
+ return ((*xdr_args)(&(((struct tcp_conn *)(xprt->xp_p1))->xdrs), args_ptr, 0));
}
static bool_t
&(((struct tcp_conn *)(xprt->xp_p1))->xdrs);
xdrs->x_op = XDR_FREE;
- return ((*xdr_args)(xdrs, args_ptr));
+ return ((*xdr_args)(xdrs, args_ptr, 0));
}
static bool_t