diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6ce80a55ed0b4ee6415272082a5bbcb9ae1678bc..e431d1f57c2c681df70eb7d04e10fe1460f36c12 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -89,7 +89,7 @@ set (core_sources
      fiber_cond.c
      fiber_channel.c
      latch.c
-     sio.cc
+     sio.c
      evio.cc
      coio.cc
      coio_task.c
diff --git a/src/sio.cc b/src/sio.c
similarity index 99%
rename from src/sio.cc
rename to src/sio.c
index 238922660fedc2487c93a3cc103a3812f3b976f2..613cd9412e4cff93599d129606e08e3bd73f0034 100644
--- a/src/sio.cc
+++ b/src/sio.c
@@ -297,7 +297,7 @@ sio_strfaddr(struct sockaddr *addr, socklen_t addrlen)
 	static __thread char name[NI_MAXHOST + _POSIX_PATH_MAX + 2];
 	switch (addr->sa_family) {
 		case AF_UNIX:
-			if (addrlen >= sizeof(sockaddr_un)) {
+			if (addrlen >= sizeof(struct sockaddr_un)) {
 				snprintf(name, sizeof(name), "unix/:%s",
 					((struct sockaddr_un *)addr)->sun_path);
 			} else {
diff --git a/src/sio.h b/src/sio.h
index 5bbe345b90beb9ac2b6d6c62d4836329dc7e7704..3067dc111ea5948d3854e4545bd3c236b924854b 100644
--- a/src/sio.h
+++ b/src/sio.h
@@ -121,9 +121,6 @@ sio_add_to_iov(struct iovec *iov, size_t size)
 	iov->iov_base = (char *) iov->iov_base - size;
 }
 
-#if defined(__cplusplus)
-} /* extern "C" */
-
 /**
  * Pretty print socket name and peer (for exceptions).
  * Preserves the errno. Returns a thread-local buffer.
@@ -206,6 +203,8 @@ ssize_t sio_sendto(int fd, const void *buf, size_t len, int flags,
 ssize_t sio_recvfrom(int fd, void *buf, size_t len, int flags,
 		     struct sockaddr *src_addr, socklen_t *addrlen);
 
+#if defined(__cplusplus)
+} /* extern "C" */
 #endif /* defined(__cplusplus) */
 
 #endif /* TARANTOOL_SIO_H_INCLUDED */