Lines 428-434
rxi_Listen(osi_socket sock)
Link Here
|
428 |
int |
428 |
int |
429 |
rxi_Recvmsg(int socket, struct msghdr *msg_p, int flags) |
429 |
rxi_Recvmsg(int socket, struct msghdr *msg_p, int flags) |
430 |
{ |
430 |
{ |
431 |
return recvmsg((int)socket, msg_p, flags); |
431 |
#ifdef HAVE_OPENVZ |
|
|
432 |
struct ve_struct *ve; |
433 |
int ret; |
434 |
|
435 |
ve = set_exec_env(get_ve0()); |
436 |
ret = recvmsg((int)socket, msg_p, flags); |
437 |
(void)set_exec_env(ve); |
438 |
|
439 |
return ret; |
440 |
#else |
441 |
return recvmsg((int)socket, msg_p, flags); |
442 |
#endif |
432 |
} |
443 |
} |
433 |
|
444 |
|
434 |
/* |
445 |
/* |
Lines 438-443
rxi_Recvmsg(int socket, struct msghdr *msg_p, int flags)
Link Here
|
438 |
int |
449 |
int |
439 |
rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags) |
450 |
rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags) |
440 |
{ |
451 |
{ |
|
|
452 |
#ifdef HAVE_OPENVZ |
453 |
struct ve_struct *ve; |
454 |
ve = set_exec_env(get_ve0()); |
455 |
#endif |
441 |
fd_set *sfds = (fd_set *) 0; |
456 |
fd_set *sfds = (fd_set *) 0; |
442 |
while (sendmsg(socket, msg_p, flags) == -1) { |
457 |
while (sendmsg(socket, msg_p, flags) == -1) { |
443 |
int err; |
458 |
int err; |
Lines 446-451
rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags)
Link Here
|
446 |
if (!sfds) { |
461 |
if (!sfds) { |
447 |
if (!(sfds = IOMGR_AllocFDSet())) { |
462 |
if (!(sfds = IOMGR_AllocFDSet())) { |
448 |
(osi_Msg "rx failed to alloc fd_set: "); |
463 |
(osi_Msg "rx failed to alloc fd_set: "); |
|
|
464 |
#ifdef HAVE_OPENVZ |
465 |
(void)set_exec_env(ve); |
466 |
#endif |
449 |
perror("rx_sendmsg"); |
467 |
perror("rx_sendmsg"); |
450 |
return -1; |
468 |
return -1; |
451 |
} |
469 |
} |
Lines 465-478
rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags)
Link Here
|
465 |
{ |
483 |
{ |
466 |
(osi_Msg "rx failed to send packet: "); |
484 |
(osi_Msg "rx failed to send packet: "); |
467 |
perror("rx_sendmsg"); |
485 |
perror("rx_sendmsg"); |
|
|
486 |
#ifdef HAVE_OPENVZ |
487 |
(void)set_exec_env(ve); |
488 |
#endif |
468 |
return -1; |
489 |
return -1; |
469 |
} |
490 |
} |
470 |
while ((err = select(socket + 1, 0, sfds, 0, 0)) != 1) { |
491 |
while ((err = select(socket + 1, 0, sfds, 0, 0)) != 1) { |
471 |
if (err >= 0 || errno != EINTR) |
492 |
if (err >= 0 || errno != EINTR) { |
|
|
493 |
#ifdef HAVE_OPENVZ |
494 |
(void)set_exec_env(ve); |
495 |
#endif |
472 |
osi_Panic("rxi_sendmsg: select error %d.%d", err, errno); |
496 |
osi_Panic("rxi_sendmsg: select error %d.%d", err, errno); |
|
|
497 |
} |
473 |
} |
498 |
} |
474 |
} |
499 |
} |
475 |
if (sfds) |
500 |
if (sfds) |
476 |
IOMGR_FreeFDSet(sfds); |
501 |
IOMGR_FreeFDSet(sfds); |
|
|
502 |
#ifdef HAVE_OPENVZ |
503 |
(void)set_exec_env(ve); |
504 |
#endif |
477 |
return 0; |
505 |
return 0; |
478 |
} |
506 |
} |