Changeset 24304 for titan/titan/sock.h
- Timestamp:
- 10/14/13 15:33:40 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
titan/titan/sock.h
r24302 r24304 587 587 unsigned long getchunkedlen(int sock, int timeout) 588 588 { 589 printf("1111111111\n");590 589 unsigned long len = 0; 591 590 int ret = 0; … … 603 602 break; 604 603 } 605 printf("222222222\n");606 604 if(c == ';') break; 607 605 608 606 chunked[chunkedid] = c; 609 printf("333333333\n");610 607 chunkedid++; 611 608 if(chunkedid > 2 && c == '\n') 612 609 break; 613 610 } 614 printf("8888888\n"); 611 615 612 len = strtol(chunked, NULL, 16); 616 printf("999999999\n");617 613 debug(99, "chunkedlen=%u", len); 618 614 return len; … … 625 621 { 626 622 int sock = -1, ret = 0, count = 0, hret = 0, freeheader = 0, gzip = 0; 627 int headerlen = 0, chunkedlen = 0, chunked = 0 ;623 int headerlen = 0, chunkedlen = 0, chunked = 0, readsize = 0; 628 624 unsigned int len = 0, maxret = 0; 629 625 char *ip = NULL; … … 734 730 pbuf++; 735 731 } 732 733 debug(99, "-----------------------------------------------------------------"); 734 debug(99, "header: %s", tmpbuf); 735 debug(99, "-----------------------------------------------------------------"); 736 736 737 737 if(flag == 2) … … 752 752 goto end; 753 753 } 754 755 if(flag == 0) headerlen = 0; 754 756 755 757 //TODO: case-sens check … … 760 762 len = strtoul(contentlen, NULL, 10); 761 763 } 762 763 debug(99, "-----------------------------------------------------------------");764 debug(99, "header: %s", tmpbuf);765 debug(99, "-----------------------------------------------------------------");766 764 767 765 if(filename == NULL && (flag == 0 || flag == 1) && ostrstr(tmpbuf, "gzip") != NULL) … … 774 772 chunked = 1; 775 773 chunkedlen = getchunkedlen(sock, timeout); 776 if(chunkedlen > MINMALLOC) chunked = 0; 777 } 778 779 if(flag == 0) headerlen = 0; 780 if(chunked == 0) chunkedlen = MINMALLOC - headerlen; 781 while((ret = sockread(sock, (unsigned char*)tmpbuf + headerlen, 0, chunkedlen, timeout * 1000, 0)) > 0) 782 { 774 if(chunkedlen + headerlen > MINMALLOC) 775 readsize = MINMALLOC - headerlen; 776 else 777 readsize = chunkedlen; 778 } 779 780 if(chunked == 0) readsize = MINMALLOC - headerlen; 781 while((ret = sockread(sock, (unsigned char*)tmpbuf + headerlen, 0, readsize, timeout * 1000, 0)) > 0) 782 { 783 if(chunked == 1) chunkedlen -= ret; 784 783 785 maxret += ret; 784 786 if(len > 0) … … 804 806 memset(tmpbuf, 0, ret); 805 807 806 if(chunked == 1 )808 if(chunked == 1 && chunkedlen == 0) 807 809 { 808 810 chunkedlen = getchunkedlen(sock, timeout); 809 if(chunkedlen > MINMALLOC) chunked = 0; 810 } 811 if(chunked == 0) chunkedlen = MINMALLOC - headerlen; 811 if(chunkedlen + headerlen > MINMALLOC) 812 readsize = MINMALLOC - headerlen; 813 else 814 readsize = chunkedlen; 815 } 816 if(chunked == 1 && chunkedlen > 0) 817 { 818 if(chunkedlen + headerlen > MINMALLOC) 819 readsize = MINMALLOC - headerlen; 820 else 821 readsize = chunkedlen; 822 } 823 if(chunked == 0) readsize = MINMALLOC - headerlen; 812 824 } 813 825 if(ret < 0) … … 828 840 829 841 end: 830 printf("aaaaaaaa\n"); 842 831 843 free(tmpbuf); 832 844 if(fd != NULL) fclose(fd); 833 845 sockclose(&sock); 834 printf("bbbbbb\n"); 846 835 847 if(gzip != 0) 836 848 { … … 872 884 debug(99, "http unzip end"); 873 885 } 874 printf("ccccccccc\n"); 886 875 887 if(filename == NULL) 876 888 { … … 878 890 buf[count] = '\0'; 879 891 } 880 printf("ddddddddd\n"); 892 881 893 if((hret == 301 || hret == 302) && retstr != NULL && redirect < 3) //redirect 882 894 { … … 901 913 } 902 914 } 903 printf("eeeeeeeee\n"); 915 904 916 redirect++; 905 917 free(buf); buf = NULL; … … 907 919 free(rhost); rhost = NULL; 908 920 } 909 printf("ffffffff\n"); 921 910 922 if(clen != 0) *clen = maxret; 911 923 if(dnode != NULL) dnode->ret = 0; 912 924 free(retstr); retstr = NULL; 913 printf("ggggggggggg\n"); 925 914 926 if(filename == NULL) 915 927 return buf;
Note: See TracChangeset
for help on using the changeset viewer.