diff --git a/src/common/util.c b/src/common/util.c
index 2d426bb136..940f25e275 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -1094,24 +1094,6 @@ write_all_to_fd(int fd, const char *buf, size_t count)
return (ssize_t)count;
}
-/** Write count bytes from buf to sock. Return the number
- * of bytes written, or -1 on error. Only use if fd is a blocking fd. */
-ssize_t
-write_all_to_socket(tor_socket_t fd, const char *buf, size_t count)
-{
- size_t written = 0;
- ssize_t result;
- raw_assert(count < SSIZE_MAX);
-
- while (written != count) {
- result = tor_socket_send(fd, buf+written, count-written, 0);
- if (result<0)
- return -1;
- written += result;
- }
- return (ssize_t)count;
-}
-
/** Read from fd to buf, until we get count bytes or
* reach the end of the file. Return the number of bytes read, or -1 on
* error. Only use if fd is a blocking fd. */
@@ -1137,31 +1119,6 @@ read_all_from_fd(int fd, char *buf, size_t count)
return (ssize_t)numread;
}
-/** Read from sock to buf, until we get count bytes or
- * reach the end of the file. Return the number of bytes read, or -1 on
- * error. Only use if fd is a blocking fd. */
-ssize_t
-read_all_from_socket(tor_socket_t sock, char *buf, size_t count)
-{
- size_t numread = 0;
- ssize_t result;
-
- if (count > SIZE_T_CEILING || count > SSIZE_MAX) {
- errno = EINVAL;
- return -1;
- }
-
- while (numread < count) {
- result = tor_socket_recv(sock, buf+numread, count-numread, 0);
- if (result<0)
- return -1;
- else if (result == 0)
- break;
- numread += result;
- }
- return (ssize_t)numread;
-}
-
/*
* Filesystem operations.
*/
diff --git a/src/common/util.h b/src/common/util.h
index 1cb3e73b32..b7ac2a1761 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -118,9 +118,7 @@ int format_time_interval(char *out, size_t out_len, long interval);
/* File helpers */
ssize_t write_all_to_fd(int fd, const char *buf, size_t count);
-ssize_t write_all_to_socket(tor_socket_t fd, const char *buf, size_t count);
ssize_t read_all_from_fd(int fd, char *buf, size_t count);
-ssize_t read_all_from_socket(tor_socket_t fd, char *buf, size_t count);
#define write_all(fd, buf, count, isSock) \
((isSock) ? write_all_to_socket((fd), (buf), (count)) \
diff --git a/src/lib/net/.may_include b/src/lib/net/.may_include
index 479f852939..1458dad990 100644
--- a/src/lib/net/.may_include
+++ b/src/lib/net/.may_include
@@ -5,6 +5,7 @@ ht.h
lib/cc/*.h
lib/container/*.h
lib/ctime/*.h
+lib/err/*.h
lib/lock/*.h
lib/log/*.h
lib/net/*.h
diff --git a/src/lib/net/socket.c b/src/lib/net/socket.c
index 4c14a42896..cd18d70839 100644
--- a/src/lib/net/socket.c
+++ b/src/lib/net/socket.c
@@ -7,6 +7,7 @@
#include "lib/net/socket.h"
#include "lib/net/address.h"
#include "lib/cc/compat_compiler.h"
+#include "lib/err/torerr.h"
#include "lib/lock/compat_mutex.h"
#include "lib/log/torlog.h"
#include "lib/log/util_bug.h"
@@ -647,3 +648,46 @@ set_socket_nonblocking(tor_socket_t sock)
return 0;
}
+
+/** Read from sock to buf, until we get count bytes or
+ * reach the end of the file. Return the number of bytes read, or -1 on
+ * error. Only use if fd is a blocking fd. */
+ssize_t
+read_all_from_socket(tor_socket_t sock, char *buf, size_t count)
+{
+ size_t numread = 0;
+ ssize_t result;
+
+ if (count > SIZE_T_CEILING || count > SSIZE_MAX) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ while (numread < count) {
+ result = tor_socket_recv(sock, buf+numread, count-numread, 0);
+ if (result<0)
+ return -1;
+ else if (result == 0)
+ break;
+ numread += result;
+ }
+ return (ssize_t)numread;
+}
+
+/** Write count bytes from buf to sock. Return the number
+ * of bytes written, or -1 on error. Only use if fd is a blocking fd. */
+ssize_t
+write_all_to_socket(tor_socket_t fd, const char *buf, size_t count)
+{
+ size_t written = 0;
+ ssize_t result;
+ raw_assert(count < SSIZE_MAX);
+
+ while (written != count) {
+ result = tor_socket_send(fd, buf+written, count-written, 0);
+ if (result<0)
+ return -1;
+ written += result;
+ }
+ return (ssize_t)count;
+}
diff --git a/src/lib/net/socket.h b/src/lib/net/socket.h
index 93af92983a..99b0de4ff9 100644
--- a/src/lib/net/socket.h
+++ b/src/lib/net/socket.h
@@ -52,6 +52,9 @@ int network_init(void);
int get_max_sockets(void);
void set_max_sockets(int);
+ssize_t write_all_to_socket(tor_socket_t fd, const char *buf, size_t count);
+ssize_t read_all_from_socket(tor_socket_t fd, char *buf, size_t count);
+
/* For stupid historical reasons, windows sockets have an independent
* set of errnos, and an independent way to get them. Also, you can't
* always believe WSAEWOULDBLOCK. Use the macros below to compare