X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/e04c2d50fd96f3f31bc96851c55c6efecc10469c..97567475d4a5cd2860df6aeac5cef30be4342da6:/pkstream/pkstream.c
diff --git a/pkstream/pkstream.c b/pkstream/pkstream.c
index df839993..4e565e00 100644
--- a/pkstream/pkstream.c
+++ b/pkstream/pkstream.c
@@ -1,7 +1,5 @@
/* -*-c-*-
*
- * $Id: pkstream.c,v 1.3 2004/04/08 01:36:17 mdw Exp $
- *
* Forwarding UDP packets over a stream
*
* (c) 2003 Straylight/Edgeware
@@ -11,19 +9,18 @@
*
* This file is part of Trivial IP Encryption (TrIPE).
*
- * TrIPE is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * TrIPE is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 3 of the License, or (at your
+ * option) any later version.
*
- * TrIPE is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * TrIPE is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
*
* You should have received a copy of the GNU General Public License
- * along with TrIPE; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with TrIPE. If not, see .
*/
/*----- Header files ------------------------------------------------------*/
@@ -56,6 +53,8 @@
#include
#include
+#include "util.h"
+
/*----- Data structures ---------------------------------------------------*/
typedef struct pk {
@@ -129,7 +128,7 @@ static void rdtcp(octet *b, size_t sz, pkbuf *pk, size_t *k, void *vp)
}
pksz = LOAD16(b);
if (pksz + 2 == sz) {
- write(fd_udp, b + 2, pksz);
+ DISCARD(write(fd_udp, b + 2, pksz));
selpk_want(&p->p, 2);
} else {
selpk_want(&p->p, pksz + 2);
@@ -394,6 +393,7 @@ int main(int argc, char *argv[])
break;
case 'b':
parseaddr(optarg, &bindaddr.sin_addr, 0);
+ cw.me.sin_addr = bindaddr.sin_addr;
break;
case 'c':
parseaddr(optarg, &connaddr.sin_addr, &pt);
@@ -436,8 +436,10 @@ int main(int argc, char *argv[])
} else
dofwd(STDIN_FILENO, STDOUT_FILENO);
- for (;;)
- sel_select(&sel);
+ for (;;) {
+ if (sel_select(&sel) && errno != EINTR)
+ die(1, "select failed: %s", strerror(errno));
+ }
return (0);
}