X-Git-Url: https://git.distorted.org.uk/~mdw/fwd/blobdiff_plain/07d71f34ab3887b63c6ff2d635fce07368f90295..47a7631fc173b345182df04f67523d3b2fe4ba83:/endpt.c diff --git a/endpt.c b/endpt.c index 348dd44..2e51e54 100644 --- a/endpt.c +++ b/endpt.c @@ -1,13 +1,11 @@ /* -*-c-*- * - * $Id: endpt.c,v 1.1 1999/07/26 23:33:01 mdw Exp $ - * * Generic endpoint abstraction * * (c) 1999 Straylight/Edgeware */ -/*----- Licensing notice --------------------------------------------------* +/*----- Licensing notice --------------------------------------------------* * * This file is part of the `fw' port forwarder. * @@ -15,40 +13,18 @@ * 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. - * + * * `fw' 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 `fw'; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: endpt.c,v $ - * Revision 1.1 1999/07/26 23:33:01 mdw - * Infrastructure for the new design. - * - */ - -/*----- Header files ------------------------------------------------------*/ - -#include "config.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include "chan.h" -#include "endpt.h" +#include "fw.h" /*----- Data structures ---------------------------------------------------*/ @@ -324,11 +300,14 @@ void endpt_join(endpt *a, endpt *b) e = a; a = b; b = e; } - /* --- Attach the non-file endpoint to the file and run away --- */ + /* --- Attach the non-file endpoint to the file and run away --- * + * + * Leave it as the non-file's responsibility to close the other endpoint + * when it's ready. It should also close itself at that time. + */ b->ops->attach(b, a->in, a->out); - a->ops->close(a); - b->ops->close(b); + b->ops->file(b, a); if (t->next) t->next->prev = t->prev; if (t->prev) @@ -369,6 +348,6 @@ void endpt_join(endpt *a, endpt *b) chan_open(&t->c->ab, a->in->fd, b->out->fd, doneab, t); chan_open(&t->c->ba, b->in->fd, a->out->fd, doneba, t); return; -} +} /*----- That's all, folks -------------------------------------------------*/