Updated the copyright declaration in several modules, removing any language which...
[citadel.git] / citadel / event_client.c
index bd0b8a105be45f9cda7a142a32860a8331b36052..79a2f0f9c213feb6d4b8517f0de0d7cbef88aae3 100644 (file)
@@ -1,20 +1,13 @@
 /*
- *
  * Copyright (c) 1998-2012 by the citadel.org team
  *
- *  This program is open source 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.
- *
- *  This program 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.
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 3.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * This program 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.
  */
 
 #include "sysdep.h"
@@ -309,7 +302,7 @@ void FreeAsyncIOContents(AsyncIO *IO)
 }
 
 
-void StopClientWatchers(AsyncIO *IO)
+void StopClientWatchers(AsyncIO *IO, int CloseFD)
 {
        ev_timer_stop (event_base, &IO->rw_timeout);
        ev_timer_stop(event_base, &IO->conn_fail);
@@ -320,11 +313,11 @@ void StopClientWatchers(AsyncIO *IO)
        ev_io_stop(event_base, &IO->send_event);
        ev_io_stop(event_base, &IO->recv_event);
 
-       if (IO->SendBuf.fd != 0) {
+       if (CloseFD && (IO->SendBuf.fd > 0)) {
                close(IO->SendBuf.fd);
+               IO->SendBuf.fd = -1;
+               IO->RecvBuf.fd = -1;
        }
-       IO->SendBuf.fd = 0;
-       IO->RecvBuf.fd = 0;
 }
 
 void StopCurlWatchers(AsyncIO *IO)
@@ -352,7 +345,7 @@ void ShutDownCLient(AsyncIO *IO)
 
        EVM_syslog(LOG_DEBUG, "EVENT Terminating \n");
 
-       StopClientWatchers(IO);
+       StopClientWatchers(IO, 1);
 
        if (IO->DNS.Channel != NULL) {
                ares_destroy(IO->DNS.Channel);
@@ -585,7 +578,7 @@ IO_send_callback(struct ev_loop *loop, ev_io *watcher, int revents)
        }
        else if (rc < 0) {
                if (errno != EAGAIN) {
-                       StopClientWatchers(IO);
+                       StopClientWatchers(IO, 1);
                        EV_syslog(LOG_DEBUG,
                                  "EVENT: Socket Invalid! [%d] [%s] [%d]\n",
                                  errno, strerror(errno), IO->SendBuf.fd);
@@ -817,7 +810,7 @@ IO_recv_callback(struct ev_loop *loop, ev_io *watcher, int revents)
        } else if (nbytes == -1) {
                if (errno != EAGAIN) {
                        // FD is gone. kick it. 
-                       StopClientWatchers(IO);
+                       StopClientWatchers(IO, 1);
                        EV_syslog(LOG_DEBUG,
                                  "EVENT: Socket Invalid! [%d] [%s] [%d]\n",
                                  errno, strerror(errno), IO->SendBuf.fd);