- The big forward port. I probably broke lots of stuff, so please look over any
[ircu2.10.12-pk.git] / ircd / s_bsd.c
index 0b5324bb842607c246eadf0dc2389d35584d3d62..282bb5eaebfcc7e1212f23b9b42df31acf1db08f 100644 (file)
@@ -358,7 +358,7 @@ unsigned int deliver_it(struct Client *cptr, struct MsgQ *buf)
 
   switch (os_sendv_nonb(cli_fd(cptr), buf, &bytes_count, &bytes_written)) {
   case IO_SUCCESS:
-    cli_flags(cptr) &= ~FLAGS_BLOCKED;
+    ClrFlag(cptr, FLAG_BLOCKED);
 
     cli_sendB(cptr) += bytes_written;
     cli_sendB(&me)  += bytes_written;
@@ -375,14 +375,14 @@ unsigned int deliver_it(struct Client *cptr, struct MsgQ *buf)
      * say it was blocked
      */
     if (bytes_written < bytes_count)
-      cli_flags(cptr) |= FLAGS_BLOCKED;
+      SetFlag(cptr, FLAG_BLOCKED);
     break;
   case IO_BLOCKED:
-    cli_flags(cptr) |= FLAGS_BLOCKED;
+    SetFlag(cptr, FLAG_BLOCKED);
     break;
   case IO_FAILURE:
     cli_error(cptr) = errno;
-    cli_flags(cptr) |= FLAGS_DEADSOCKET;
+    SetFlag(cptr, FLAG_DEADSOCKET);
     break;
   }
   return bytes_written;
@@ -460,7 +460,7 @@ static int completed_connection(struct Client* cptr)
    * Make us timeout after twice the timeout for DNS look ups
    */
   cli_lasttime(cptr) = CurrentTime;
-  cli_flags(cptr) |= FLAGS_PINGSENT;
+  SetFlag(cptr, FLAG_PINGSENT);
 
   sendrawto_one(cptr, MSG_SERVER " %s 1 %Tu %Tu J%s %s%s +%s :%s",
                 cli_name(&me), cli_serv(&me)->timestamp, newts,
@@ -540,7 +540,7 @@ void close_connection(struct Client *cptr)
     socket_del(&(cli_socket(cptr))); /* queue a socket delete */
     cli_fd(cptr) = -1;
   }
-  cli_flags(cptr) |= FLAGS_DEADSOCKET;
+  SetFlag(cptr, FLAG_DEADSOCKET);
 
   MsgQClear(&(cli_sendQ(cptr)));
   client_drop_sendq(cli_connect(cptr));
@@ -704,18 +704,21 @@ static int read_packet(struct Client *cptr, int socket_ready)
        DBufLength(&(cli_recvQ(cptr))) > feature_int(FEAT_CLIENT_FLOOD))) {
     switch (os_recv_nonb(cli_fd(cptr), readbuf, sizeof(readbuf), &length)) {
     case IO_SUCCESS:
-      if (length) {
-        cli_lasttime(cptr) = CurrentTime;
+      if (length)
+      {
+        if (!IsServer(cptr))
+          cli_lasttime(cptr) = CurrentTime;
         if (cli_lasttime(cptr) > cli_since(cptr))
           cli_since(cptr) = cli_lasttime(cptr);
-        cli_flags(cptr) &= ~(FLAGS_PINGSENT | FLAGS_NONL);
+        ClrFlag(cptr, FLAG_PINGSENT);
+        ClrFlag(cptr, FLAG_NONL);
       }
       break;
     case IO_BLOCKED:
       break;
     case IO_FAILURE:
       cli_error(cptr) = errno;
-      /* cptr->flags |= FLAGS_DEADSOCKET; */
+      /* SetFlag(cpt, FLAG_DEADSOCKET); */
       return 0;
     }
   }
@@ -754,10 +757,10 @@ static int read_packet(struct Client *cptr, int socket_ready)
        * deletes the rest of the buffer contents.
        * -avalon
        */
-      if (dolen = 0)
+      if (dolen == 0)
       {
         if (DBufLength(&(cli_recvQ(cptr))) < 510)
-          cli_flags(cptr) |= FLAGS_NONL;
+          SetFlag(cptr, FLAG_NONL);
         else
           DBufClear(&(cli_recvQ(cptr)));
       }
@@ -769,15 +772,15 @@ static int read_packet(struct Client *cptr, int socket_ready)
        */
       if (IsHandshake(cptr) || IsServer(cptr))
       {
-        while (DBufLength(&(cli_recvQ(cptr))) && !NoNewLine(cptr))
+        while (-1)
         {
           dolen = dbuf_get(&(cli_recvQ(cptr)), readbuf, sizeof(readbuf));
-          if (dolen < 0)
+          if (dolen <= 0)
             return 1;
           else if (dolen == 0)
           {
             if (DBufLength(&(cli_recvQ(cptr))) < 510)
-              cli_flags(cptr) |= FLAGS_NONL;
+              SetFlag(cptr, FLAG_NONL);
             else
               DBufClear(&(cli_recvQ(cptr)));
           }
@@ -1022,7 +1025,7 @@ static void client_sock_callback(struct Event* ev)
   case ET_EOF: /* end of file on socket */
     Debug((DEBUG_ERROR, "READ ERROR: fd = %d %d", cli_fd(cptr),
           cli_error(cptr)));
-    cli_flags(cptr) |= FLAGS_DEADSOCKET;
+    SetFlag(cptr, FLAG_DEADSOCKET);
     if ((IsServer(cptr) || IsHandshake(cptr)) && cli_error(cptr) == 0) {
       exit_client_msg(cptr, cptr, &me, "Server %s closed the connection (%s)",
                      cli_name(cptr), cli_serv(cptr)->last_error_msg);
@@ -1034,7 +1037,7 @@ static void client_sock_callback(struct Event* ev)
     break;
 
   case ET_WRITE: /* socket is writable */
-    cli_flags(cptr) &= ~FLAGS_BLOCKED;
+    ClrFlag(cptr, FLAG_BLOCKED);
     if (cli_listing(cptr) && MsgQLength(&(cli_sendQ(cptr))) < 2048)
       list_next_channels(cptr, 64);
     Debug((DEBUG_SEND, "Sending queued data to %C", cptr));