comparison libpurple/upnp.c @ 30578:0accc8adb18a

merge of '2f6318bd834113559a405ec68cdb178f2180b680' and '64e02b98551e11e093e4649f1516f3aceaa321e2'
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sun, 26 Sep 2010 20:16:15 +0000
parents db7ffb0120d7
children 0d71d4695520
comparison
equal deleted inserted replaced
30577:7b761c8601f7 30578:0accc8adb18a
401 if(control_url != NULL) { 401 if(control_url != NULL) {
402 lookup_public_ip(); 402 lookup_public_ip();
403 lookup_internal_ip(); 403 lookup_internal_ip();
404 } 404 }
405 405
406 if (dd->inpa > 0)
407 purple_input_remove(dd->inpa);
408 if (dd->tima > 0)
409 purple_timeout_remove(dd->tima);
410
406 g_free(dd); 411 g_free(dd);
407 } 412 }
408 413
409 static void 414 static void
410 purple_upnp_parse_description(const gchar* descriptionURL, UPnPDiscoveryData *dd) 415 purple_upnp_parse_description(const gchar* descriptionURL, UPnPDiscoveryData *dd)
504 { 509 {
505 UPnPDiscoveryData* dd = data; 510 UPnPDiscoveryData* dd = data;
506 511
507 if (dd->inpa) 512 if (dd->inpa)
508 purple_input_remove(dd->inpa); 513 purple_input_remove(dd->inpa);
514 if (dd->tima > 0)
515 purple_timeout_remove(dd->tima);
509 dd->inpa = 0; 516 dd->inpa = 0;
510 dd->tima = 0; 517 dd->tima = 0;
511 518
512 if (dd->retry_count < NUM_UDP_ATTEMPTS) { 519 if (dd->retry_count < NUM_UDP_ATTEMPTS) {
513 /* TODO: We probably shouldn't be incrementing retry_count in two places */ 520 /* TODO: We probably shouldn't be incrementing retry_count in two places */
608 } 615 }
609 } 616 }
610 617
611 /* We have already done all our retries. Make sure that the callback 618 /* We have already done all our retries. Make sure that the callback
612 * doesn't get called before the original function returns */ 619 * doesn't get called before the original function returns */
613 purple_timeout_add(10, purple_upnp_discover_timeout, dd); 620 dd->tima = purple_timeout_add(10, purple_upnp_discover_timeout, dd);
614 } 621 }
615 622
616 void 623 void
617 purple_upnp_discover(PurpleUPnPCallback cb, gpointer cb_data) 624 purple_upnp_discover(PurpleUPnPCallback cb, gpointer cb_data)
618 { 625 {
645 if(sock == -1) { 652 if(sock == -1) {
646 purple_debug_error("upnp", 653 purple_debug_error("upnp",
647 "purple_upnp_discover(): Failed In sock creation\n"); 654 "purple_upnp_discover(): Failed In sock creation\n");
648 /* Short circuit the retry attempts */ 655 /* Short circuit the retry attempts */
649 dd->retry_count = NUM_UDP_ATTEMPTS; 656 dd->retry_count = NUM_UDP_ATTEMPTS;
650 purple_timeout_add(10, purple_upnp_discover_timeout, dd); 657 dd->tima = purple_timeout_add(10, purple_upnp_discover_timeout, dd);
651 return; 658 return;
652 } 659 }
653 660
654 dd->fd = sock; 661 dd->fd = sock;
655 662
657 if((hp = gethostbyname(HTTPMU_HOST_ADDRESS)) == NULL) { 664 if((hp = gethostbyname(HTTPMU_HOST_ADDRESS)) == NULL) {
658 purple_debug_error("upnp", 665 purple_debug_error("upnp",
659 "purple_upnp_discover(): Failed In gethostbyname\n"); 666 "purple_upnp_discover(): Failed In gethostbyname\n");
660 /* Short circuit the retry attempts */ 667 /* Short circuit the retry attempts */
661 dd->retry_count = NUM_UDP_ATTEMPTS; 668 dd->retry_count = NUM_UDP_ATTEMPTS;
662 purple_timeout_add(10, purple_upnp_discover_timeout, dd); 669 dd->tima = purple_timeout_add(10, purple_upnp_discover_timeout, dd);
663 return; 670 return;
664 } 671 }
665 672
666 memset(&(dd->server), 0, sizeof(struct sockaddr)); 673 memset(&(dd->server), 0, sizeof(struct sockaddr));
667 dd->server.sin_family = AF_INET; 674 dd->server.sin_family = AF_INET;