Q_vb();
}
#endif
-void Qsocket( int type ) {
+void Qsocket( int domain , int type ) {
vb.used= 0;
Tvba("socket");
+ Tvbf(domain==AF_INET ? " domain=AF_INET" :
+ domain==AF_INET6 ? " domain=AF_INET6" :
+ " domain=AF_???");
Tvbf(type==SOCK_STREAM ? " type=SOCK_STREAM" : " type=SOCK_DGRAM");
Q_vb();
}
Tvba("recvfrom");
Tvbf(" fd=%d",fd);
Tvbf(" buflen=%lu",(unsigned long)buflen);
- Tvbf(" *addrlen=%d",addrlen);
Q_vb();
}
void Qread( int fd , size_t buflen ) {
Q_vb();
}
void Tvbaddr(const struct sockaddr *addr, int len) {
- const struct sockaddr_in *ai= (const struct sockaddr_in*)addr;
- assert(len==sizeof(struct sockaddr_in));
- assert(ai->sin_family==AF_INET);
- Tvbf("%s:%u",inet_ntoa(ai->sin_addr),htons(ai->sin_port));
+ char buf[ADNS_ADDR2TEXT_BUFLEN];
+ int err, port;
+ int sz= sizeof(buf);
+ err= adns_addr2text(addr, 0, buf,&sz, &port);
+ assert(!err);
+ Tvbf(strchr(buf, ':') ? "[%s]:%d" : "%s:%d", buf,port);
}
void Tvbbytes(const void *buf, int len) {
const byte *bp;
void Tvbfdset(int max, const fd_set *fds) {
int i;
const char *comma= "";
+ if (!fds) {
+ Tvba("null");
+ return;
+ }
Tvba("[");
for (i=0; i<max; i++) {
if (!FD_ISSET(i,fds)) continue;
size_t osz;
if (op) { oldnode= (void*)((char*)op - MALLOCHSZ); osz= oldnode->sz; } else { osz= 0; }
np= Hmalloc(nsz);
- memcpy(np,op, osz>nsz ? nsz : osz);
+ if (osz) memcpy(np,op, osz>nsz ? nsz : osz);
Hfree(op);
return np;
}
-void Hexit(int rv) {
+void Texit(int rv) {
struct malloced *loopnode;
Tshutdown();
adns__vbuf_free(&vb);
}
exit(rv);
}
+void Hexit(int rv) {
+ vb.used= 0;
+ Tvbf("exit %d", rv);
+ Q_vb();
+ Texit(0);
+}
+pid_t Hgetpid(void) {
+ return 2264; /* just some number */
+}