| 343 if (xfer_data) |
343 if (xfer_data) |
| 344 yahoo_xfer_data_free(xfer_data); |
344 yahoo_xfer_data_free(xfer_data); |
| 345 xfer->data = NULL; |
345 xfer->data = NULL; |
| 346 } |
346 } |
| 347 |
347 |
| 348 void yahoo_process_p2pfilexfer( GaimConnection *gc, struct yahoo_packet *pkt ) |
348 void yahoo_process_p2pfilexfer(GaimConnection *gc, struct yahoo_packet *pkt) |
| 349 { |
349 { |
| 350 GSList *l = pkt->hash; |
350 GSList *l = pkt->hash; |
| 351 |
351 |
| 352 char *me = NULL; |
352 char *me = NULL; |
| 353 char *from = NULL; |
353 char *from = NULL; |
| 354 char *service = NULL; |
354 char *service = NULL; |
| 355 char *message = NULL; |
355 char *message = NULL; |
| 356 char *command = NULL; |
356 char *command = NULL; |
| 357 char *imv = NULL; |
357 char *imv = NULL; |
| 358 char *unknown = NULL; |
358 char *unknown = NULL; |
| 359 |
359 |
| 360 /* Get all the necessary values from this new packet */ |
360 /* Get all the necessary values from this new packet */ |
| 361 while( l ) |
361 while(l != NULL) |
| 362 { |
362 { |
| 363 struct yahoo_pair *pair = l->data; |
363 struct yahoo_pair *pair = l->data; |
| 364 |
364 |
| 365 if( pair->key == 5 ) /* Get who the packet is for */ |
365 if(pair->key == 5) /* Get who the packet is for */ |
| 366 me = pair->value; |
366 me = pair->value; |
| 367 |
367 |
| 368 if( pair->key == 4 ) /* Get who the packet is from */ |
368 if(pair->key == 4) /* Get who the packet is from */ |
| 369 from = pair->value; |
369 from = pair->value; |
| 370 |
370 |
| 371 if( pair->key == 49 ) /* Get the type of service */ |
371 if(pair->key == 49) /* Get the type of service */ |
| 372 service = pair->value; |
372 service = pair->value; |
| 373 |
373 |
| 374 if( pair->key == 14 ) /* Get the 'message' of the packet */ |
374 if(pair->key == 14) /* Get the 'message' of the packet */ |
| 375 message = pair->value; |
375 message = pair->value; |
| 376 |
376 |
| 377 if( pair->key == 13 ) /* Get the command associated with this packet */ |
377 if(pair->key == 13) /* Get the command associated with this packet */ |
| 378 command = pair->value; |
378 command = pair->value; |
| 379 |
379 |
| 380 if( pair->key == 63 ) /* IMVironment name and version */ |
380 if(pair->key == 63) /* IMVironment name and version */ |
| 381 imv = pair->value; |
381 imv = pair->value; |
| 382 |
382 |
| 383 if( pair->key == 64 ) /* Not sure, but it does vary with initialization of Doodle */ |
383 if(pair->key == 64) /* Not sure, but it does vary with initialization of Doodle */ |
| 384 unknown = pair->value; /* So, I'll keep it (for a little while atleast) */ |
384 unknown = pair->value; /* So, I'll keep it (for a little while atleast) */ |
| 385 |
385 |
| 386 l = l->next; |
386 l = l->next; |
| 387 } |
387 } |
| 388 |
388 |
| 389 /* If this packet is an IMVIRONMENT, handle it accordingly */ |
389 /* If this packet is an IMVIRONMENT, handle it accordingly */ |
| 390 if( !strcmp( service, "IMVIRONMENT" ) ) |
390 if(!strcmp(service, "IMVIRONMENT")) |
| 391 { |
391 { |
| 392 /* Check for a Doodle packet and handle it accordingly */ |
392 /* Check for a Doodle packet and handle it accordingly */ |
| 393 if( !strcmp( imv, "doodle;11" ) ) |
393 if(!strcmp(imv, "doodle;11")) |
| 394 yahoo_doodle_process( gc, me, from, command, message ); |
394 yahoo_doodle_process(gc, me, from, command, message); |
| 395 |
395 |
| 396 /* If an IMVIRONMENT packet comes without a specific imviroment name */ |
396 /* If an IMVIRONMENT packet comes without a specific imviroment name */ |
| 397 if( !strcmp( imv, ";0" ) ) |
397 if(!strcmp(imv, ";0")) |
| 398 { |
398 { |
| 399 /* It is unfortunately time to close all IMVironments with remote |
399 /* It is unfortunately time to close all IMVironments with the remote client */ |
| 400 * client |
400 yahoo_doodle_command_got_shutdown(gc, from); |
| 401 */ |
|
| 402 yahoo_doodle_command_got_shutdown( gc, from ); |
|
| 403 } |
401 } |
| 404 } |
402 } |
| 405 } |
403 } |
| 406 |
404 |
| 407 void yahoo_process_filetransfer(GaimConnection *gc, struct yahoo_packet *pkt) |
405 void yahoo_process_filetransfer(GaimConnection *gc, struct yahoo_packet *pkt) |
| 531 gaim_xfer_set_cancel_recv_fnc(xfer, yahoo_xfer_cancel_recv); |
529 gaim_xfer_set_cancel_recv_fnc(xfer, yahoo_xfer_cancel_recv); |
| 532 gaim_xfer_set_read_fnc(xfer, yahoo_xfer_read); |
530 gaim_xfer_set_read_fnc(xfer, yahoo_xfer_read); |
| 533 gaim_xfer_set_write_fnc(xfer, yahoo_xfer_write); |
531 gaim_xfer_set_write_fnc(xfer, yahoo_xfer_write); |
| 534 |
532 |
| 535 /* Now perform the request */ |
533 /* Now perform the request */ |
| 536 if (file) |
534 if (file) |
| 537 gaim_xfer_request_accepted(xfer, file); |
535 gaim_xfer_request_accepted(xfer, file); |
| 538 else |
536 else |
| 539 gaim_xfer_request(xfer); |
537 gaim_xfer_request(xfer); |
| 540 } |
538 } |