| 681 | } |
| 682 | |
| 683 | void bind(NetworkAddress const& addr) override { |
| 684 | boost::system::error_code ec; |
| 685 | socket.bind(udpEndpoint(addr), ec); |
| 686 | if (ec) { |
| 687 | Error x; |
| 688 | if (ec.value() == EADDRINUSE) |
| 689 | x = address_in_use(); |
| 690 | else if (ec.value() == EADDRNOTAVAIL) |
| 691 | x = invalid_local_address(); |
| 692 | else |
| 693 | x = bind_failed(); |
| 694 | TraceEvent(SevWarnAlways, "Net2UDPBindError").error(x); |
| 695 | throw x; |
| 696 | } |
| 697 | isPublic = true; |
| 698 | } |
| 699 | |
| 700 | UID getDebugID() const override { return id; } |
| 701 |