diff --git a/src/coeio.m b/src/coeio.m
index 95247eedae43fff3be993ee6cd5f91ae55f81444..f6f34b8a81e87ab52c248d4f987cad382d5d3b74 100644
--- a/src/coeio.m
+++ b/src/coeio.m
@@ -228,7 +228,14 @@ getaddrinfo_cb(va_list ap)
 	 *
 	 * See for details: https://bugs.launchpad.net/tarantool/+bug/1160877
 	 */
-	if (rc == EAI_ADDRFAMILY || rc == EAI_BADFLAGS) {
+
+	/* EAI_ADDRFAMILY is deprecated on FreeBSD */
+#ifdef EAI_ADDRFAMILY
+	int is_rc = EAI_BADFLAGS|EAI_ADDRFAMILY;
+#else
+	int is_rc = EAI_BADFLAGS;
+#endif
+	if (rc == is_rc) {
 		hints->ai_flags &= ~AI_ADDRCONFIG;
 		rc = getaddrinfo(host, port, hints, res);
 	}
diff --git a/src/sio.m b/src/sio.m
index abe1f933ba4fefdd95dc0edfb255bd2b1ce23666..4118db8d2e542d3c3ba27d2a0a53b0f0b5ab2c0e 100644
--- a/src/sio.m
+++ b/src/sio.m
@@ -271,7 +271,8 @@ ssize_t
 sio_sendto(int fd, const void *buf, size_t len, int flags,
 	   const struct sockaddr_in *dest_addr, socklen_t addrlen)
 {
-	ssize_t n = sendto(fd, buf, len, flags, dest_addr, addrlen);
+	ssize_t n = sendto(fd, buf, len, flags, (struct sockaddr*)dest_addr,
+	                   addrlen);
 	if (n < 0 && errno != EAGAIN &&
 	    errno != EWOULDBLOCK && errno != EINTR)
 			tnt_raise(SocketError, :fd in:"sendto(%zd)", len);
@@ -283,7 +284,8 @@ ssize_t
 sio_recvfrom(int fd, void *buf, size_t len, int flags,
 	     struct sockaddr_in *src_addr, socklen_t *addrlen)
 {
-	ssize_t n = recvfrom(fd, buf, len, flags, src_addr, addrlen);
+	ssize_t n = recvfrom(fd, buf, len, flags, (struct sockaddr*)src_addr,
+	                     addrlen);
 	if (n < 0 && errno != EAGAIN &&
 	    errno != EWOULDBLOCK && errno != EINTR)
 			tnt_raise(SocketError, :fd in:"recvfrom(%zd)", len);