} pkstream;
typedef struct connwait {
+ unsigned f; /* Various flags */
+#define cwf_port 1u /* Port is defined => listen */
sel_file a; /* Selector */
struct sockaddr_in me, peer; /* Who I'm meant to be; who peer is */
} connwait;
xfree(pk);
}
xfree(p);
- if (cw.me.sin_port) dolisten();
+ if (cw.f&cwf_port) dolisten();
else exit(0);
}
#define f_bogus 1u
+ cw.f = 0;
+
ego(argv[0]);
sel_init(&sel);
for (;;) {
if (bindsvc && connhost)
die(1, "can't listen and connect");
- initaddr(&cw.me);
if (bindhost || bindsvc) {
initaddr(&bindaddr);
if (!bindsvc) parseaddr(bindhost, 0, 0, &bindaddr);
- else parseaddr(bindhost, bindsvc, 0, &cw.me);
+ else {
+ initaddr(&cw.me);
+ parseaddr(bindhost, bindsvc, 0, &cw.me);
+ cw.f |= cwf_port;
+ }
}
initaddr(&cw.peer);