Guest User

Untitled

a guest
Jun 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. static int
  2. rcv_kern(int sock, void *buf, int len, struct sockaddr *addr,
  3. socklen_t *addrlen)
  4. {
  5. struct timeval timeout = {1, 0};
  6. fd_set set;
  7. int status;
  8.  
  9. FD_SET(sock, &set);
  10. if ((status = select(sock + 1, &set, NULL, NULL, &timeout)) == 0) {
  11. FD_ZERO(&set);
  12. fprintf(stderr,
  13. "timeout while receiving answer from kerneln");
  14. exit(1);
  15. } else if (status == -1) {
  16. FD_ZERO(&set);
  17. perror("recvfrom failed");
  18. exit(1);
  19. }
  20. FD_ZERO(&set);
  21. return recvfrom(sock, buf, len, 0, addr, addrlen);
  22. }
  23.  
  24. static int
  25. rcv_kern(int sock, void *buf, int len, struct sockaddr *addr,
  26. socklen_t *addrlen)
  27. {
  28. struct timeval timeout = {1, 0};
  29. fd_set set;
  30. int status;
  31.  
  32. FD_ZERO(&set);
  33. FD_SET(sock, &set);
  34. if ((status = select(sock + 1, &set, NULL, NULL, &timeout)) == 0) {
  35. fprintf(stderr,
  36. "timeout while receiving answer from kerneln");
  37. exit(1);
  38. } else if (status < 0) {
  39. perror("recvfrom failed");
  40. exit(1);
  41. }
  42. if ((status = recvfrom(sock, buf, len, 0, addr, addrlen)) < 0) {
  43. perror("recvfrom error");
  44. exit(1);
  45. }
  46. if (status == 0) {
  47. fprintf(stderr, "kernel closed socketn");
  48. exit(1);
  49. }
  50. return status;
  51. }
Add Comment
Please, Sign In to add comment