8#include "timeoutconn.h"
14static struct taia now;
15static struct taia deadline;
17static ssize_t mywrite(
int fd,
char *buf,
size_t len)
23 x.events = IOPAUSE_WRITE;
26 r = iopause(&x,1,&deadline,&now);
29 if (taia_less(&deadline,&now)) {
34 return write(fd,buf,len);
37static ssize_t
myread(
int fd,
char *buf,
size_t len)
43 x.events = IOPAUSE_READ;
46 r = iopause(&x,1,&deadline,&now);
49 if (taia_less(&deadline,&now)) {
54 return read(fd,buf,len);
62 char strnum[FMT_ULONG];
67 if (socket_bind4(s,
iplocal,0) == -1)
return -1;
77 buffer_put(&
b,
" , ",3);
78 buffer_put(&
b,strnum,fmt_ulong(strnum,
portlocal));
79 buffer_put(&
b,
"\r\n",2);
80 if (buffer_flush(&
b) == -1)
return -1;
85 if (buffer_get(&
b,&ch,1) != 1)
return -1;
86 if ((ch ==
' ') || (ch ==
'\t') || (ch ==
'\r'))
continue;
87 if (ch ==
'\n')
return 0;
89 if (ch ==
':') ++numcolons;
92 if (!stralloc_append(
out,&ch))
return -1;
93 if (
out->len > 256)
return 0;
104 if (!stralloc_copys(
out,
""))
return -1;
108 taia_add(&deadline,&now,&deadline);
111 if (s == -1)
return -1;
char bspace[BUFFER_SMALL]
int remoteinfo(stralloc *out, char ipremote[16], uint16 portremote, char iplocal[16], uint16 portlocal, unsigned int timeout, uint32 netif)
ssize_t myread(int fd, char *buf, size_t len)
ssize_t write(int, char *, size_t)
ssize_t read(int, char *, size_t)
void doit(int fdleft, int fdright)