aboutsummaryrefslogtreecommitdiff
path: root/src/usocket.c
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2005-10-07 04:40:59 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2005-10-07 04:40:59 +0000
commitf4dadea763c1959a27dead24df3ee6c54c209842 (patch)
treec13b294a8ca5438d59b60e3f5a25a4f7c1fc9a1b /src/usocket.c
parent562d8cceb704a96a7b2f9acc4bc229ab9f5c6541 (diff)
downloadluasocket-f4dadea763c1959a27dead24df3ee6c54c209842.tar.gz
luasocket-f4dadea763c1959a27dead24df3ee6c54c209842.tar.bz2
luasocket-f4dadea763c1959a27dead24df3ee6c54c209842.zip
Before compiling on Windows.
Diffstat (limited to 'src/usocket.c')
-rw-r--r--src/usocket.c113
1 files changed, 57 insertions, 56 deletions
diff --git a/src/usocket.c b/src/usocket.c
index f067fa1..e9db6dd 100644
--- a/src/usocket.c
+++ b/src/usocket.c
@@ -16,21 +16,21 @@
16/*-------------------------------------------------------------------------*\ 16/*-------------------------------------------------------------------------*\
17* Wait for readable/writable/connected socket with timeout 17* Wait for readable/writable/connected socket with timeout
18\*-------------------------------------------------------------------------*/ 18\*-------------------------------------------------------------------------*/
19#ifdef SOCK_POLL 19#ifdef SOCKET_POLL
20#include <sys/poll.h> 20#include <sys/poll.h>
21 21
22#define WAITFD_R POLLIN 22#define WAITFD_R POLLIN
23#define WAITFD_W POLLOUT 23#define WAITFD_W POLLOUT
24#define WAITFD_C (POLLIN|POLLOUT) 24#define WAITFD_C (POLLIN|POLLOUT)
25int sock_waitfd(p_sock ps, int sw, p_tm tm) { 25int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
26 int ret; 26 int ret;
27 struct pollfd pfd; 27 struct pollfd pfd;
28 pfd.fd = *ps; 28 pfd.fd = *ps;
29 pfd.events = sw; 29 pfd.events = sw;
30 pfd.revents = 0; 30 pfd.revents = 0;
31 if (tm_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ 31 if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */
32 do { 32 do {
33 int t = (int)(tm_getretry(tm)*1e3); 33 int t = (int)(timeout_getretry(tm)*1e3);
34 ret = poll(&pfd, 1, t >= 0? t: -1); 34 ret = poll(&pfd, 1, t >= 0? t: -1);
35 } while (ret == -1 && errno == EINTR); 35 } while (ret == -1 && errno == EINTR);
36 if (ret == -1) return errno; 36 if (ret == -1) return errno;
@@ -44,18 +44,18 @@ int sock_waitfd(p_sock ps, int sw, p_tm tm) {
44#define WAITFD_W 2 44#define WAITFD_W 2
45#define WAITFD_C (WAITFD_R|WAITFD_W) 45#define WAITFD_C (WAITFD_R|WAITFD_W)
46 46
47int sock_waitfd(p_sock ps, int sw, p_tm tm) { 47int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
48 int ret; 48 int ret;
49 fd_set rfds, wfds, *rp, *wp; 49 fd_set rfds, wfds, *rp, *wp;
50 struct timeval tv, *tp; 50 struct timeval tv, *tp;
51 double t; 51 double t;
52 if (tm_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ 52 if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */
53 do { 53 do {
54 /* must set bits within loop, because select may have modifed them */ 54 /* must set bits within loop, because select may have modifed them */
55 rp = wp = NULL; 55 rp = wp = NULL;
56 if (sw & WAITFD_R) { FD_ZERO(&rfds); FD_SET(*ps, &rfds); rp = &rfds; } 56 if (sw & WAITFD_R) { FD_ZERO(&rfds); FD_SET(*ps, &rfds); rp = &rfds; }
57 if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; } 57 if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; }
58 t = tm_getretry(tm); 58 t = timeout_getretry(tm);
59 tp = NULL; 59 tp = NULL;
60 if (t >= 0.0) { 60 if (t >= 0.0) {
61 tv.tv_sec = (int)t; 61 tv.tv_sec = (int)t;
@@ -75,7 +75,7 @@ int sock_waitfd(p_sock ps, int sw, p_tm tm) {
75/*-------------------------------------------------------------------------*\ 75/*-------------------------------------------------------------------------*\
76* Initializes module 76* Initializes module
77\*-------------------------------------------------------------------------*/ 77\*-------------------------------------------------------------------------*/
78int sock_open(void) { 78int socket_open(void) {
79 /* instals a handler to ignore sigpipe or it will crash us */ 79 /* instals a handler to ignore sigpipe or it will crash us */
80 signal(SIGPIPE, SIG_IGN); 80 signal(SIGPIPE, SIG_IGN);
81 return 1; 81 return 1;
@@ -84,29 +84,29 @@ int sock_open(void) {
84/*-------------------------------------------------------------------------*\ 84/*-------------------------------------------------------------------------*\
85* Close module 85* Close module
86\*-------------------------------------------------------------------------*/ 86\*-------------------------------------------------------------------------*/
87int sock_close(void) { 87int socket_close(void) {
88 return 1; 88 return 1;
89} 89}
90 90
91/*-------------------------------------------------------------------------*\ 91/*-------------------------------------------------------------------------*\
92* Close and inutilize socket 92* Close and inutilize socket
93\*-------------------------------------------------------------------------*/ 93\*-------------------------------------------------------------------------*/
94void sock_destroy(p_sock ps) { 94void socket_destroy(p_socket ps) {
95 if (*ps != SOCK_INVALID) { 95 if (*ps != SOCKET_INVALID) {
96 sock_setblocking(ps); 96 socket_setblocking(ps);
97 close(*ps); 97 close(*ps);
98 *ps = SOCK_INVALID; 98 *ps = SOCKET_INVALID;
99 } 99 }
100} 100}
101 101
102/*-------------------------------------------------------------------------*\ 102/*-------------------------------------------------------------------------*\
103* Select with timeout control 103* Select with timeout control
104\*-------------------------------------------------------------------------*/ 104\*-------------------------------------------------------------------------*/
105int sock_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_tm tm) { 105int socket_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm) {
106 int ret; 106 int ret;
107 do { 107 do {
108 struct timeval tv; 108 struct timeval tv;
109 double t = tm_getretry(tm); 109 double t = timeout_getretry(tm);
110 tv.tv_sec = (int) t; 110 tv.tv_sec = (int) t;
111 tv.tv_usec = (int) ((t - tv.tv_sec) * 1.0e6); 111 tv.tv_usec = (int) ((t - tv.tv_sec) * 1.0e6);
112 ret = select(n, rfds, wfds, efds, t >= 0.0? &tv: NULL); 112 ret = select(n, rfds, wfds, efds, t >= 0.0? &tv: NULL);
@@ -117,59 +117,59 @@ int sock_select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_tm tm) {
117/*-------------------------------------------------------------------------*\ 117/*-------------------------------------------------------------------------*\
118* Creates and sets up a socket 118* Creates and sets up a socket
119\*-------------------------------------------------------------------------*/ 119\*-------------------------------------------------------------------------*/
120int sock_create(p_sock ps, int domain, int type, int protocol) { 120int socket_create(p_socket ps, int domain, int type, int protocol) {
121 *ps = socket(domain, type, protocol); 121 *ps = socket(domain, type, protocol);
122 if (*ps != SOCK_INVALID) return IO_DONE; 122 if (*ps != SOCKET_INVALID) return IO_DONE;
123 else return errno; 123 else return errno;
124} 124}
125 125
126/*-------------------------------------------------------------------------*\ 126/*-------------------------------------------------------------------------*\
127* Binds or returns error message 127* Binds or returns error message
128\*-------------------------------------------------------------------------*/ 128\*-------------------------------------------------------------------------*/
129int sock_bind(p_sock ps, SA *addr, socklen_t len) { 129int socket_bind(p_socket ps, SA *addr, socklen_t len) {
130 int err = IO_DONE; 130 int err = IO_DONE;
131 sock_setblocking(ps); 131 socket_setblocking(ps);
132 if (bind(*ps, addr, len) < 0) err = errno; 132 if (bind(*ps, addr, len) < 0) err = errno;
133 sock_setnonblocking(ps); 133 socket_setnonblocking(ps);
134 return err; 134 return err;
135} 135}
136 136
137/*-------------------------------------------------------------------------*\ 137/*-------------------------------------------------------------------------*\
138* 138*
139\*-------------------------------------------------------------------------*/ 139\*-------------------------------------------------------------------------*/
140int sock_listen(p_sock ps, int backlog) { 140int socket_listen(p_socket ps, int backlog) {
141 int err = IO_DONE; 141 int err = IO_DONE;
142 sock_setblocking(ps); 142 socket_setblocking(ps);
143 if (listen(*ps, backlog)) err = errno; 143 if (listen(*ps, backlog)) err = errno;
144 sock_setnonblocking(ps); 144 socket_setnonblocking(ps);
145 return err; 145 return err;
146} 146}
147 147
148/*-------------------------------------------------------------------------*\ 148/*-------------------------------------------------------------------------*\
149* 149*
150\*-------------------------------------------------------------------------*/ 150\*-------------------------------------------------------------------------*/
151void sock_shutdown(p_sock ps, int how) { 151void socket_shutdown(p_socket ps, int how) {
152 sock_setblocking(ps); 152 socket_setblocking(ps);
153 shutdown(*ps, how); 153 shutdown(*ps, how);
154 sock_setnonblocking(ps); 154 socket_setnonblocking(ps);
155} 155}
156 156
157/*-------------------------------------------------------------------------*\ 157/*-------------------------------------------------------------------------*\
158* Connects or returns error message 158* Connects or returns error message
159\*-------------------------------------------------------------------------*/ 159\*-------------------------------------------------------------------------*/
160int sock_connect(p_sock ps, SA *addr, socklen_t len, p_tm tm) { 160int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
161 int err; 161 int err;
162 /* avoid calling on closed sockets */ 162 /* avoid calling on closed sockets */
163 if (*ps == SOCK_INVALID) return IO_CLOSED; 163 if (*ps == SOCKET_INVALID) return IO_CLOSED;
164 /* call connect until done or failed without being interrupted */ 164 /* call connect until done or failed without being interrupted */
165 do if (connect(*ps, addr, len) == 0) return IO_DONE; 165 do if (connect(*ps, addr, len) == 0) return IO_DONE;
166 while ((err = errno) == EINTR); 166 while ((err = errno) == EINTR);
167 /* if connection failed immediately, return error code */ 167 /* if connection failed immediately, return error code */
168 if (err != EINPROGRESS && err != EAGAIN) return err; 168 if (err != EINPROGRESS && err != EAGAIN) return err;
169 /* zero timeout case optimization */ 169 /* zero timeout case optimization */
170 if (tm_iszero(tm)) return IO_TIMEOUT; 170 if (timeout_iszero(tm)) return IO_TIMEOUT;
171 /* wait until we have the result of the connection attempt or timeout */ 171 /* wait until we have the result of the connection attempt or timeout */
172 err = sock_waitfd(ps, WAITFD_C, tm); 172 err = socket_waitfd(ps, WAITFD_C, tm);
173 if (err == IO_CLOSED) { 173 if (err == IO_CLOSED) {
174 if (recv(*ps, (char *) &err, 0, 0) == 0) return IO_DONE; 174 if (recv(*ps, (char *) &err, 0, 0) == 0) return IO_DONE;
175 else return errno; 175 else return errno;
@@ -179,19 +179,19 @@ int sock_connect(p_sock ps, SA *addr, socklen_t len, p_tm tm) {
179/*-------------------------------------------------------------------------*\ 179/*-------------------------------------------------------------------------*\
180* Accept with timeout 180* Accept with timeout
181\*-------------------------------------------------------------------------*/ 181\*-------------------------------------------------------------------------*/
182int sock_accept(p_sock ps, p_sock pa, SA *addr, socklen_t *len, p_tm tm) { 182int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout tm) {
183 SA daddr; 183 SA daddr;
184 socklen_t dlen = sizeof(daddr); 184 socklen_t dlen = sizeof(daddr);
185 if (*ps == SOCK_INVALID) return IO_CLOSED; 185 if (*ps == SOCKET_INVALID) return IO_CLOSED;
186 if (!addr) addr = &daddr; 186 if (!addr) addr = &daddr;
187 if (!len) len = &dlen; 187 if (!len) len = &dlen;
188 for ( ;; ) { 188 for ( ;; ) {
189 int err; 189 int err;
190 if ((*pa = accept(*ps, addr, len)) != SOCK_INVALID) return IO_DONE; 190 if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE;
191 err = errno; 191 err = errno;
192 if (err == EINTR) continue; 192 if (err == EINTR) continue;
193 if (err != EAGAIN && err != ECONNABORTED) return err; 193 if (err != EAGAIN && err != ECONNABORTED) return err;
194 if ((err = sock_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; 194 if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
195 } 195 }
196 /* can't reach here */ 196 /* can't reach here */
197 return IO_UNKNOWN; 197 return IO_UNKNOWN;
@@ -200,11 +200,12 @@ int sock_accept(p_sock ps, p_sock pa, SA *addr, socklen_t *len, p_tm tm) {
200/*-------------------------------------------------------------------------*\ 200/*-------------------------------------------------------------------------*\
201* Send with timeout 201* Send with timeout
202\*-------------------------------------------------------------------------*/ 202\*-------------------------------------------------------------------------*/
203int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm) 203int socket_send(p_socket ps, const char *data, size_t count,
204 size_t *sent, p_timeout tm)
204{ 205{
205 int err; 206 int err;
206 /* avoid making system calls on closed sockets */ 207 /* avoid making system calls on closed sockets */
207 if (*ps == SOCK_INVALID) return IO_CLOSED; 208 if (*ps == SOCKET_INVALID) return IO_CLOSED;
208 /* loop until we send something or we give up on error */ 209 /* loop until we send something or we give up on error */
209 *sent = 0; 210 *sent = 0;
210 for ( ;; ) { 211 for ( ;; ) {
@@ -223,7 +224,7 @@ int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm)
223 /* if failed fatal reason, report error */ 224 /* if failed fatal reason, report error */
224 if (err != EAGAIN) return err; 225 if (err != EAGAIN) return err;
225 /* wait until we can send something or we timeout */ 226 /* wait until we can send something or we timeout */
226 if ((err = sock_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; 227 if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
227 } 228 }
228 /* can't reach here */ 229 /* can't reach here */
229 return IO_UNKNOWN; 230 return IO_UNKNOWN;
@@ -232,11 +233,11 @@ int sock_send(p_sock ps, const char *data, size_t count, size_t *sent, p_tm tm)
232/*-------------------------------------------------------------------------*\ 233/*-------------------------------------------------------------------------*\
233* Sendto with timeout 234* Sendto with timeout
234\*-------------------------------------------------------------------------*/ 235\*-------------------------------------------------------------------------*/
235int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent, 236int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
236 SA *addr, socklen_t len, p_tm tm) 237 SA *addr, socklen_t len, p_timeout tm)
237{ 238{
238 int err; 239 int err;
239 if (*ps == SOCK_INVALID) return IO_CLOSED; 240 if (*ps == SOCKET_INVALID) return IO_CLOSED;
240 *sent = 0; 241 *sent = 0;
241 for ( ;; ) { 242 for ( ;; ) {
242 long put = (long) sendto(*ps, data, count, 0, addr, len); 243 long put = (long) sendto(*ps, data, count, 0, addr, len);
@@ -248,7 +249,7 @@ int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent,
248 if (put == 0 || err == EPIPE) return IO_CLOSED; 249 if (put == 0 || err == EPIPE) return IO_CLOSED;
249 if (err == EINTR) continue; 250 if (err == EINTR) continue;
250 if (err != EAGAIN) return err; 251 if (err != EAGAIN) return err;
251 if ((err = sock_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; 252 if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
252 } 253 }
253 return IO_UNKNOWN; 254 return IO_UNKNOWN;
254} 255}
@@ -256,9 +257,9 @@ int sock_sendto(p_sock ps, const char *data, size_t count, size_t *sent,
256/*-------------------------------------------------------------------------*\ 257/*-------------------------------------------------------------------------*\
257* Receive with timeout 258* Receive with timeout
258\*-------------------------------------------------------------------------*/ 259\*-------------------------------------------------------------------------*/
259int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm) { 260int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) {
260 int err; 261 int err;
261 if (*ps == SOCK_INVALID) return IO_CLOSED; 262 if (*ps == SOCKET_INVALID) return IO_CLOSED;
262 for ( ;; ) { 263 for ( ;; ) {
263 long taken = (long) recv(*ps, data, count, 0); 264 long taken = (long) recv(*ps, data, count, 0);
264 if (taken > 0) { 265 if (taken > 0) {
@@ -270,7 +271,7 @@ int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm) {
270 if (taken == 0) return IO_CLOSED; 271 if (taken == 0) return IO_CLOSED;
271 if (err == EINTR) continue; 272 if (err == EINTR) continue;
272 if (err != EAGAIN) return err; 273 if (err != EAGAIN) return err;
273 if ((err = sock_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; 274 if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
274 } 275 }
275 return IO_UNKNOWN; 276 return IO_UNKNOWN;
276} 277}
@@ -278,10 +279,10 @@ int sock_recv(p_sock ps, char *data, size_t count, size_t *got, p_tm tm) {
278/*-------------------------------------------------------------------------*\ 279/*-------------------------------------------------------------------------*\
279* Recvfrom with timeout 280* Recvfrom with timeout
280\*-------------------------------------------------------------------------*/ 281\*-------------------------------------------------------------------------*/
281int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got, 282int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
282 SA *addr, socklen_t *len, p_tm tm) { 283 SA *addr, socklen_t *len, p_timeout tm) {
283 int err; 284 int err;
284 if (*ps == SOCK_INVALID) return IO_CLOSED; 285 if (*ps == SOCKET_INVALID) return IO_CLOSED;
285 for ( ;; ) { 286 for ( ;; ) {
286 long taken = (long) recvfrom(*ps, data, count, 0, addr, len); 287 long taken = (long) recvfrom(*ps, data, count, 0, addr, len);
287 if (taken > 0) { 288 if (taken > 0) {
@@ -293,7 +294,7 @@ int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got,
293 if (taken == 0) return IO_CLOSED; 294 if (taken == 0) return IO_CLOSED;
294 if (err == EINTR) continue; 295 if (err == EINTR) continue;
295 if (err != EAGAIN) return err; 296 if (err != EAGAIN) return err;
296 if ((err = sock_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; 297 if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
297 } 298 }
298 return IO_UNKNOWN; 299 return IO_UNKNOWN;
299} 300}
@@ -301,7 +302,7 @@ int sock_recvfrom(p_sock ps, char *data, size_t count, size_t *got,
301/*-------------------------------------------------------------------------*\ 302/*-------------------------------------------------------------------------*\
302* Put socket into blocking mode 303* Put socket into blocking mode
303\*-------------------------------------------------------------------------*/ 304\*-------------------------------------------------------------------------*/
304void sock_setblocking(p_sock ps) { 305void socket_setblocking(p_socket ps) {
305 int flags = fcntl(*ps, F_GETFL, 0); 306 int flags = fcntl(*ps, F_GETFL, 0);
306 flags &= (~(O_NONBLOCK)); 307 flags &= (~(O_NONBLOCK));
307 fcntl(*ps, F_SETFL, flags); 308 fcntl(*ps, F_SETFL, flags);
@@ -310,7 +311,7 @@ void sock_setblocking(p_sock ps) {
310/*-------------------------------------------------------------------------*\ 311/*-------------------------------------------------------------------------*\
311* Put socket into non-blocking mode 312* Put socket into non-blocking mode
312\*-------------------------------------------------------------------------*/ 313\*-------------------------------------------------------------------------*/
313void sock_setnonblocking(p_sock ps) { 314void socket_setnonblocking(p_socket ps) {
314 int flags = fcntl(*ps, F_GETFL, 0); 315 int flags = fcntl(*ps, F_GETFL, 0);
315 flags |= O_NONBLOCK; 316 flags |= O_NONBLOCK;
316 fcntl(*ps, F_SETFL, flags); 317 fcntl(*ps, F_SETFL, flags);
@@ -319,7 +320,7 @@ void sock_setnonblocking(p_sock ps) {
319/*-------------------------------------------------------------------------*\ 320/*-------------------------------------------------------------------------*\
320* DNS helpers 321* DNS helpers
321\*-------------------------------------------------------------------------*/ 322\*-------------------------------------------------------------------------*/
322int sock_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) { 323int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) {
323 *hp = gethostbyaddr(addr, len, AF_INET); 324 *hp = gethostbyaddr(addr, len, AF_INET);
324 if (*hp) return IO_DONE; 325 if (*hp) return IO_DONE;
325 else if (h_errno) return h_errno; 326 else if (h_errno) return h_errno;
@@ -327,7 +328,7 @@ int sock_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) {
327 else return IO_UNKNOWN; 328 else return IO_UNKNOWN;
328} 329}
329 330
330int sock_gethostbyname(const char *addr, struct hostent **hp) { 331int socket_gethostbyname(const char *addr, struct hostent **hp) {
331 *hp = gethostbyname(addr); 332 *hp = gethostbyname(addr);
332 if (*hp) return IO_DONE; 333 if (*hp) return IO_DONE;
333 else if (h_errno) return h_errno; 334 else if (h_errno) return h_errno;
@@ -339,7 +340,7 @@ int sock_gethostbyname(const char *addr, struct hostent **hp) {
339* Error translation functions 340* Error translation functions
340* Make sure important error messages are standard 341* Make sure important error messages are standard
341\*-------------------------------------------------------------------------*/ 342\*-------------------------------------------------------------------------*/
342const char *sock_hoststrerror(int err) { 343const char *socket_hoststrerror(int err) {
343 if (err <= 0) return io_strerror(err); 344 if (err <= 0) return io_strerror(err);
344 switch (err) { 345 switch (err) {
345 case HOST_NOT_FOUND: return "host not found"; 346 case HOST_NOT_FOUND: return "host not found";
@@ -347,7 +348,7 @@ const char *sock_hoststrerror(int err) {
347 } 348 }
348} 349}
349 350
350const char *sock_strerror(int err) { 351const char *socket_strerror(int err) {
351 if (err <= 0) return io_strerror(err); 352 if (err <= 0) return io_strerror(err);
352 switch (err) { 353 switch (err) {
353 case EADDRINUSE: return "address already in use"; 354 case EADDRINUSE: return "address already in use";
@@ -361,7 +362,7 @@ const char *sock_strerror(int err) {
361 } 362 }
362} 363}
363 364
364const char *sock_ioerror(p_sock ps, int err) { 365const char *socket_ioerror(p_socket ps, int err) {
365 (void) ps; 366 (void) ps;
366 return sock_strerror(err); 367 return socket_strerror(err);
367} 368}