Mercurial > pidgin.yaz
comparison libfaim/aim_rxhandlers.c @ 445:e4c34ca88d9b
[gaim-migrate @ 455]
Hehehehehe
Libfaim got updated, gaim got updated. btw, gaim/faim can't sign in yet,
don't ask me why. it's not my fault.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 29 Jun 2000 20:40:28 +0000 |
parents | f3c8d79688db |
children | 6d78b988b479 |
comparison
equal
deleted
inserted
replaced
444:e7885c54ed2f | 445:e4c34ca88d9b |
---|---|
175 | 175 |
176 family = aimutil_get16(workingPtr->data+0); | 176 family = aimutil_get16(workingPtr->data+0); |
177 subtype= aimutil_get16(workingPtr->data+2); | 177 subtype= aimutil_get16(workingPtr->data+2); |
178 | 178 |
179 if((family < maxf) && (subtype+1 < maxs) && (literals[family][subtype] != NULL)) | 179 if((family < maxf) && (subtype+1 < maxs) && (literals[family][subtype] != NULL)) |
180 faimdprintf(1, "bleck: null handler for %04x/%04x (%s)\n", family, subtype, literals[family][subtype+1]); | 180 faimdprintf("bleck: null handler for %04x/%04x (%s)\n", family, subtype, literals[family][subtype+1]); |
181 else | 181 else |
182 faimdprintf(1, "bleck: null handler for %04x/%04x (no literal)\n",family,subtype); | 182 faimdprintf("bleck: null handler for %04x/%04x (no literal)\n",family,subtype); |
183 | 183 |
184 return 1; | 184 return 1; |
185 } | 185 } |
186 | 186 |
187 int aim_conn_addhandler(struct aim_session_t *sess, | 187 int aim_conn_addhandler(struct aim_session_t *sess, |
311 /* | 311 /* |
312 * XXX: This is still fairly ugly. | 312 * XXX: This is still fairly ugly. |
313 */ | 313 */ |
314 if (workingPtr->handled) | 314 if (workingPtr->handled) |
315 continue; | 315 continue; |
316 | |
317 /* | |
318 * This is a debugging/sanity check only and probably could/should be removed | |
319 * for stable code. | |
320 */ | |
321 if (((workingPtr->hdrtype == AIM_FRAMETYPE_OFT) && | |
322 (workingPtr->conn->type != AIM_CONN_TYPE_RENDEZVOUS)) || | |
323 ((workingPtr->hdrtype == AIM_FRAMETYPE_OSCAR) && | |
324 (workingPtr->conn->type == AIM_CONN_TYPE_RENDEZVOUS))) { | |
325 printf("faim: rxhandlers: incompatible frame type %d on connection type 0x%04x\n", workingPtr->hdrtype, workingPtr->conn->type); | |
326 workingPtr->handled = 1; | |
327 continue; | |
328 } | |
316 | 329 |
317 switch(workingPtr->conn->type) { | 330 switch(workingPtr->conn->type) { |
318 case -1: | 331 case -1: |
319 /* | 332 /* |
320 * This can happen if we have a queued command | 333 * This can happen if we have a queued command |
330 | 343 |
331 head = aimutil_get32(workingPtr->data); | 344 head = aimutil_get32(workingPtr->data); |
332 if (head == 0x00000001) { | 345 if (head == 0x00000001) { |
333 faimdprintf(1, "got connection ack on auth line\n"); | 346 faimdprintf(1, "got connection ack on auth line\n"); |
334 workingPtr->handled = 1; | 347 workingPtr->handled = 1; |
335 } else { | 348 } else if (workingPtr->hdr.oscar.type == 0x0004) { |
349 workingPtr->handled = aim_authparse(sess, workingPtr); | |
350 } else { | |
336 u_short family,subtype; | 351 u_short family,subtype; |
337 | 352 |
338 family = aimutil_get16(workingPtr->data); | 353 family = aimutil_get16(workingPtr->data); |
339 subtype = aimutil_get16(workingPtr->data+2); | 354 subtype = aimutil_get16(workingPtr->data+2); |
340 | 355 |
352 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, 0x0017, 0xffff, workingPtr); | 367 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, 0x0017, 0xffff, workingPtr); |
353 break; | 368 break; |
354 #else | 369 #else |
355 /* XXX: this isnt foolproof */ | 370 /* XXX: this isnt foolproof */ |
356 case 0x0001: | 371 case 0x0001: |
357 if (subtype == 0x0003) | 372 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_GEN, AIM_CB_GEN_SERVERREADY, workingPtr); |
358 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_GEN, AIM_CB_GEN_SERVERREADY, workingPtr); | |
359 else | |
360 workingPtr->handled = aim_authparse(sess, workingPtr); | |
361 break; | 373 break; |
362 case 0x0007: | 374 case 0x0007: |
363 if (subtype == 0x0005) | 375 if (subtype == 0x0005) |
364 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_ADM, AIM_CB_ADM_INFOCHANGE_REPLY, workingPtr); | 376 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_ADM, AIM_CB_ADM_INFOCHANGE_REPLY, workingPtr); |
365 break; | 377 break; |
378 case AIM_CB_FAM_SPECIAL: | |
379 if (subtype == AIM_CB_SPECIAL_DEBUGCONN_CONNECT) { | |
380 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, family, subtype, workingPtr); | |
381 break; | |
382 } /* others fall through */ | |
366 default: | 383 default: |
367 /* Old login protocol */ | 384 /* Old login protocol */ |
368 /* any user callbacks will be called from here */ | 385 /* any user callbacks will be called from here */ |
369 workingPtr->handled = aim_authparse(sess, workingPtr); | 386 workingPtr->handled = aim_authparse(sess, workingPtr); |
370 #endif | 387 #endif |
374 } | 391 } |
375 case AIM_CONN_TYPE_BOS: { | 392 case AIM_CONN_TYPE_BOS: { |
376 u_short family; | 393 u_short family; |
377 u_short subtype; | 394 u_short subtype; |
378 | 395 |
379 if (workingPtr->type == 0x04) { | 396 if (workingPtr->hdr.oscar.type == 0x04) { |
380 workingPtr->handled = aim_negchan_middle(sess, workingPtr); | 397 workingPtr->handled = aim_negchan_middle(sess, workingPtr); |
381 break; | 398 break; |
382 } | 399 } |
383 | 400 |
384 family = aimutil_get16(workingPtr->data); | 401 family = aimutil_get16(workingPtr->data); |
457 workingPtr->handled = aim_parse_msgerror_middle(sess, workingPtr); | 474 workingPtr->handled = aim_parse_msgerror_middle(sess, workingPtr); |
458 break; | 475 break; |
459 case 0x0005: | 476 case 0x0005: |
460 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, 0x0004, 0x0005, workingPtr); | 477 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, 0x0004, 0x0005, workingPtr); |
461 break; | 478 break; |
479 case 0x0006: | |
480 workingPtr->handled = aim_parse_outgoing_im_middle(sess, workingPtr); | |
481 break; | |
462 case 0x0007: | 482 case 0x0007: |
463 workingPtr->handled = aim_parse_incoming_im_middle(sess, workingPtr); | 483 workingPtr->handled = aim_parse_incoming_im_middle(sess, workingPtr); |
464 break; | 484 break; |
465 case 0x000a: | 485 case 0x000a: |
466 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, 0x0004, 0x000a, workingPtr); | 486 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, 0x0004, 0x000a, workingPtr); |
495 else if (subtype == 0x0002) | 515 else if (subtype == 0x0002) |
496 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, 0x000b, 0x0002, workingPtr); | 516 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, 0x000b, 0x0002, workingPtr); |
497 else | 517 else |
498 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_STS, AIM_CB_STS_DEFAULT, workingPtr); | 518 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_STS, AIM_CB_STS_DEFAULT, workingPtr); |
499 break; | 519 break; |
520 case AIM_CB_FAM_SPECIAL: | |
521 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, family, subtype, workingPtr); | |
522 break; | |
500 default: | 523 default: |
501 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_UNKNOWN, workingPtr); | 524 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_UNKNOWN, workingPtr); |
502 break; | 525 break; |
503 } | 526 } |
504 break; | 527 break; |
551 printf("Chat: unknown snac %04x/%04x\n", family, subtype); | 574 printf("Chat: unknown snac %04x/%04x\n", family, subtype); |
552 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_DEFAULT, workingPtr); | 575 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_DEFAULT, workingPtr); |
553 } | 576 } |
554 break; | 577 break; |
555 } | 578 } |
579 case AIM_CONN_TYPE_RENDEZVOUS: { | |
580 /* make sure that we only get OFT frames on these connections */ | |
581 if (workingPtr->hdrtype != AIM_FRAMETYPE_OFT) { | |
582 printf("faim: internal error: non-OFT frames on OFT connection\n"); | |
583 workingPtr->handled = 1; /* get rid of it */ | |
584 break; | |
585 } | |
586 | |
587 /* XXX: implement this */ | |
588 printf("faim: OFT frame!\n"); | |
589 | |
590 break; | |
591 } | |
556 default: | 592 default: |
557 printf("\ninternal error: unknown connection type (very bad.) (type = %d, fd = %d, channel = %02x, commandlen = %02x)\n\n", workingPtr->conn->type, workingPtr->conn->fd, workingPtr->type, workingPtr->commandlen); | 593 printf("\ninternal error: unknown connection type (very bad.) (type = %d, fd = %d, commandlen = %02x)\n\n", workingPtr->conn->type, workingPtr->conn->fd, workingPtr->commandlen); |
558 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_UNKNOWN, workingPtr); | 594 workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_UNKNOWN, workingPtr); |
559 break; | 595 break; |
560 } | 596 } |
561 } | 597 } |
562 } | 598 } |
678 faimdprintf(1, "\nRecieved unknown packet:"); | 714 faimdprintf(1, "\nRecieved unknown packet:"); |
679 | 715 |
680 for (i = 0; i < command->commandlen; i++) | 716 for (i = 0; i < command->commandlen; i++) |
681 { | 717 { |
682 if ((i % 8) == 0) | 718 if ((i % 8) == 0) |
683 printf("\n\t"); | 719 faimdprintf(1, "\n\t"); |
684 | 720 |
685 printf("0x%2x ", command->data[i]); | 721 faimdprintf(1, "0x%2x ", command->data[i]); |
686 } | 722 } |
687 | 723 |
688 printf("\n\n"); | 724 faimdprintf(1, "\n\n"); |
689 | 725 |
690 return 1; | 726 return 1; |
691 } | 727 } |
692 | 728 |
693 | 729 |