Mercurial > pidgin
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; |