]> andersk Git - libfaim.git/blobdiff - aim_rxhandlers.c
- Fri Jun 30 00:04:47 UTC 2000
[libfaim.git] / aim_rxhandlers.c
index febeac446e4ba7ee12b8b3c7e453c3219f5c11dd..736fd83e4b1554eea5f8bf478d1656d7a7ecec40 100644 (file)
@@ -342,7 +342,9 @@ int aim_rxdispatch(struct aim_session_t *sess)
        if (head == 0x00000001) {
          faimdprintf(1, "got connection ack on auth line\n");
          workingPtr->handled = 1;
-       } else {
+       } else if (workingPtr->hdr.oscar.type == 0x0004) {
+         workingPtr->handled = aim_authparse(sess, workingPtr);
+        } else {
          u_short family,subtype;
          
          family = aimutil_get16(workingPtr->data);
@@ -364,15 +366,17 @@ int aim_rxdispatch(struct aim_session_t *sess)
 #else  
            /* XXX: this isnt foolproof */
          case 0x0001:
-           if (subtype == 0x0003)
-             workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_GEN, AIM_CB_GEN_SERVERREADY, workingPtr);
-           else
-             workingPtr->handled = aim_authparse(sess, workingPtr);
+           workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_GEN, AIM_CB_GEN_SERVERREADY, workingPtr);
            break;
          case 0x0007:
            if (subtype == 0x0005)
              workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_ADM, AIM_CB_ADM_INFOCHANGE_REPLY, workingPtr);
            break;
+         case AIM_CB_FAM_SPECIAL:
+           if (subtype == AIM_CB_SPECIAL_DEBUGCONN_CONNECT) {
+             workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, family, subtype, workingPtr);
+             break;
+           } /* others fall through */
          default:
            /* Old login protocol */
            /* any user callbacks will be called from here */
@@ -469,6 +473,9 @@ int aim_rxdispatch(struct aim_session_t *sess)
          case 0x0005:
            workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, 0x0004, 0x0005, workingPtr);
            break;
+         case 0x0006:
+           workingPtr->handled = aim_parse_outgoing_im_middle(sess, workingPtr);
+           break;
          case 0x0007:
            workingPtr->handled = aim_parse_incoming_im_middle(sess, workingPtr);
            break;
@@ -507,6 +514,9 @@ int aim_rxdispatch(struct aim_session_t *sess)
          else
            workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_STS, AIM_CB_STS_DEFAULT, workingPtr);
          break;
+      case AIM_CB_FAM_SPECIAL: 
+       workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, family, subtype, workingPtr);
+       break;
        default:
          workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_UNKNOWN, workingPtr);
          break;
This page took 0.109317 seconds and 4 git commands to generate.