Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. commit a0b8622b34a7a865eee497dbb8e844f0e39383dd
  2. Author: Ryota Ozaki <ozaki.ryota@gmail.com>
  3. Date: Tue Aug 13 12:04:03 2019 +0900
  4.  
  5. fix tcp panic
  6.  
  7. diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
  8. index c89dc0f4d57..fc0a7a3fd9d 100644
  9. --- a/sys/kern/uipc_socket.c
  10. +++ b/sys/kern/uipc_socket.c
  11. @@ -886,6 +886,7 @@ sosend(struct socket *so, struct sockaddr *addr, struct uio *uio,
  12. long space, len, resid, clen, mlen;
  13. int error, s, dontroute, atomic;
  14. short wakeup_state = 0;
  15. + bool need_connect = false;
  16.  
  17. clen = 0;
  18.  
  19. @@ -937,6 +938,7 @@ sosend(struct socket *so, struct sockaddr *addr, struct uio *uio,
  20. error = ENOTCONN;
  21. goto release;
  22. }
  23. + need_connect = true;
  24. } else if (addr == NULL) {
  25. error = EDESTADDRREQ;
  26. goto release;
  27. @@ -1051,6 +1053,23 @@ sosend(struct socket *so, struct sockaddr *addr, struct uio *uio,
  28. so->so_options |= SO_DONTROUTE;
  29. if (resid > 0)
  30. so->so_state |= SS_MORETOCOME;
  31. +
  32. + if (need_connect) {
  33. + if (addr == NULL) {
  34. + error = EDESTADDRREQ;
  35. + goto release;
  36. + }
  37. + if (addr->sa_family !=
  38. + so->so_proto->pr_domain->dom_family) {
  39. + error = EAFNOSUPPORT;
  40. + goto release;
  41. + }
  42. + error = (*so->so_proto->pr_usrreqs->pr_connect)(
  43. + so, addr, l);
  44. + if (error != 0)
  45. + goto release;
  46. + }
  47. +
  48. if (flags & MSG_OOB) {
  49. error = (*so->so_proto->pr_usrreqs->pr_sendoob)(
  50. so, top, control);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement