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);
#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 */
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;
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;