Mercurial > pidgin.yaz
comparison libpurple/proxy.c @ 17652:5bb6dcba5e4f
propagate from branch 'im.pidgin.pidgin' (head bdd3cb040100fe925456b862d03cc6c5a61648ef)
to branch 'org.maemo.garage.pidgin.smiley-install' (head 619530ecef0838dc85b081e0692ed145cc4b1bb0)
author | Gabriel Schulhof <nix@go-nix.ca> |
---|---|
date | Sat, 02 Jun 2007 07:33:10 +0000 |
parents | 79ecaab86f91 |
children | 57d350900136 941965d6fd88 |
comparison
equal
deleted
inserted
replaced
17644:855a767cd9a9 | 17652:5bb6dcba5e4f |
---|---|
557 http_canread(gpointer data, gint source, PurpleInputCondition cond) | 557 http_canread(gpointer data, gint source, PurpleInputCondition cond) |
558 { | 558 { |
559 int len, headers_len, status = 0; | 559 int len, headers_len, status = 0; |
560 gboolean error; | 560 gboolean error; |
561 PurpleProxyConnectData *connect_data = data; | 561 PurpleProxyConnectData *connect_data = data; |
562 guchar *p; | 562 char *p; |
563 gsize max_read; | 563 gsize max_read; |
564 | 564 |
565 if (connect_data->read_buffer == NULL) | 565 if (connect_data->read_buffer == NULL) |
566 { | 566 { |
567 connect_data->read_buf_len = 8192; | 567 connect_data->read_buf_len = 8192; |
568 connect_data->read_buffer = g_malloc(connect_data->read_buf_len); | 568 connect_data->read_buffer = g_malloc(connect_data->read_buf_len); |
569 connect_data->read_len = 0; | 569 connect_data->read_len = 0; |
570 } | 570 } |
571 | 571 |
572 p = connect_data->read_buffer + connect_data->read_len; | 572 p = (char *)connect_data->read_buffer + connect_data->read_len; |
573 max_read = connect_data->read_buf_len - connect_data->read_len - 1; | 573 max_read = connect_data->read_buf_len - connect_data->read_len - 1; |
574 | 574 |
575 len = read(connect_data->fd, p, max_read); | 575 len = read(connect_data->fd, p, max_read); |
576 | 576 |
577 if (len == 0) | 577 if (len == 0) |
594 } | 594 } |
595 | 595 |
596 connect_data->read_len += len; | 596 connect_data->read_len += len; |
597 p[len] = '\0'; | 597 p[len] = '\0'; |
598 | 598 |
599 p = (guchar *)g_strstr_len((const gchar *)connect_data->read_buffer, | 599 p = g_strstr_len((const gchar *)connect_data->read_buffer, |
600 connect_data->read_len, "\r\n\r\n"); | 600 connect_data->read_len, "\r\n\r\n"); |
601 if (p != NULL) { | 601 if (p != NULL) { |
602 *p = '\0'; | 602 *p = '\0'; |
603 headers_len = (p - connect_data->read_buffer) + 4; | 603 headers_len = (p - (char *)connect_data->read_buffer) + 4; |
604 } else if(len == max_read) | 604 } else if(len == max_read) |
605 headers_len = len; | 605 headers_len = len; |
606 else | 606 else |
607 return; | 607 return; |
608 | 608 |
609 error = strncmp((const char *)connect_data->read_buffer, "HTTP/", 5) != 0; | 609 error = strncmp((const char *)connect_data->read_buffer, "HTTP/", 5) != 0; |
610 if (!error) | 610 if (!error) |
611 { | 611 { |
612 int major; | 612 int major; |
613 p = connect_data->read_buffer + 5; | 613 p = (char *)connect_data->read_buffer + 5; |
614 major = strtol((const char *)p, (char**)&p, 10); | 614 major = strtol(p, &p, 10); |
615 error = (major == 0) || (*p != '.'); | 615 error = (major == 0) || (*p != '.'); |
616 if(!error) { | 616 if(!error) { |
617 int minor; | 617 int minor; |
618 p++; | 618 p++; |
619 minor = strtol((const char *)p, (char **)&p, 10); | 619 minor = strtol(p, &p, 10); |
620 error = (*p != ' '); | 620 error = (*p != ' '); |
621 if(!error) { | 621 if(!error) { |
622 p++; | 622 p++; |
623 status = strtol((const char *)p, (char **)&p, 10); | 623 status = strtol(p, &p, 10); |
624 error = (*p != ' '); | 624 error = (*p != ' '); |
625 } | 625 } |
626 } | 626 } |
627 } | 627 } |
628 | 628 |
629 /* Read the contents */ | 629 /* Read the contents */ |
630 p = (guchar *)g_strrstr((const gchar *)connect_data->read_buffer, "Content-Length: "); | 630 p = g_strrstr((const gchar *)connect_data->read_buffer, "Content-Length: "); |
631 if (p != NULL) | 631 if (p != NULL) |
632 { | 632 { |
633 gchar *tmp; | 633 gchar *tmp; |
634 int len = 0; | 634 int len = 0; |
635 char tmpc; | 635 char tmpc; |
636 p += strlen("Content-Length: "); | 636 p += strlen("Content-Length: "); |
637 tmp = strchr((const char *)p, '\r'); | 637 tmp = strchr(p, '\r'); |
638 if(tmp) | 638 if(tmp) |
639 *tmp = '\0'; | 639 *tmp = '\0'; |
640 len = atoi((const char *)p); | 640 len = atoi(p); |
641 if(tmp) | 641 if(tmp) |
642 *tmp = '\r'; | 642 *tmp = '\r'; |
643 | 643 |
644 /* Compensate for what has already been read */ | 644 /* Compensate for what has already been read */ |
645 len -= connect_data->read_len - headers_len; | 645 len -= connect_data->read_len - headers_len; |