Ignore:
Timestamp:
2006-07-18 11:45:15 (8 years ago)
Author:
Poul-Henning Kamp <phk@…>
Branches:
master, 1.0, 1.1, 1.2, 3.0, 4.0, experimental-ims, tags/1.0, tags/varnish-0.9, tags/varnish-0.9.1, tags/varnish-0.9.1@805, tags/varnish-0.9@787, tags/varnish-1.0, tags/varnish-1.0.1, tags/varnish-1.0.2, tags/varnish-1.0.3, tags/varnish-1.0.4, tags/varnish-1.1, tags/varnish-1.1.1, tags/varnish-1.1.2
Children:
ddd2be
Parents:
65787f
git-author:
Poul-Henning Kamp <phk@…> (2006-07-18 11:45:15)
git-committer:
Poul-Henning Kamp <phk@…> (2006-07-18 11:45:15)
Message:

Add http_Read() which reads from a socket but soaks up any prefeched
tail first and use it all the places where this logic was explicit
before.

Fix Refcounting on objects when we insert/deliver

git-svn-id:  http://www.varnish-cache.org/svn/trunk/varnish-cache@485 d4fa192b-c00b-0410-8231-f00ffab90ce4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • bin/varnishd/cache_fetch.c

    r5b868f r1a3b2c  
    3434{ 
    3535        int i; 
    36         char *e; 
    3736        unsigned char *p; 
    3837        off_t   cl; 
     
    5150        i = fcntl(fd, F_SETFL, i); 
    5251 
    53         if (http_GetTail(hp, cl, &b, &e)) { 
    54                 i = e - b; 
    55                 memcpy(p, b, i); 
    56                 p += i; 
    57                 cl -= i; 
    58         } 
    59  
    6052        while (cl != 0) { 
    61                 i = read(fd, p, cl); 
     53                i = http_Read(hp, fd, p, cl); 
    6254                assert(i > 0);  /* XXX seen */ 
    6355                p += i; 
     
    7466{ 
    7567        int i; 
    76         char *b, *q, *e; 
     68        char *q; 
    7769        unsigned char *p; 
    7870        struct storage *st; 
     
    8981        st = NULL; 
    9082        while (1) { 
    91                 if (http_GetTail(hp, be - bp, &b, &e)) { 
    92                         memcpy(bp, b, e - b); 
    93                         bp += e - b; 
    94                         *bp = '\0'; 
    95                 } else { 
    96                         i = read(fd, bp, be - bp); 
    97                         assert(i >= 0); 
    98                         bp += i; 
    99                         *bp = '\0'; 
    100                 } 
     83                i = http_Read(hp, fd, bp, be - bp); 
     84                assert(i >= 0); 
     85                bp += i; 
     86                *bp = '\0'; 
    10187                u = strtoul(buf, &q, 16); 
    10288                if (q == NULL || q == buf) 
     
    152138                        if (v == 0) 
    153139                                continue; 
    154                         if (http_GetTail(hp, v, &b, &e)) { 
    155                                 memcpy(p, b, e - b); 
    156                                 p += e - b; 
    157                                 st->len += e - b; 
    158                                 v -= e - b; 
    159                                 u -= e - b; 
    160                         } 
    161140                        while (v > 0) { 
    162                                 i = read(fd, p, v); 
     141                                i = http_Read(hp, fd, p, v); 
    163142                                assert(i > 0); 
    164143                                st->len += i; 
     
    184163{ 
    185164        int i; 
    186         char *b, *e; 
    187165        unsigned char *p; 
    188166        struct storage *st; 
     
    205183                assert(p != NULL); 
    206184                assert(st != NULL); 
    207                 if (http_GetTail(hp, v, &b, &e)) { 
    208                         memcpy(p, b, e - b); 
    209                         p += e - b; 
    210                         v -= e - b; 
    211                         st->len += e - b; 
    212                         sp->obj->len += e - b; 
    213                         *p = '\0'; 
    214                 } 
    215                 i = read(fd, p, v); 
     185                i = http_Read(hp, fd, p, v); 
    216186                assert(i >= 0); 
    217187                if (i == 0) 
Note: See TracChangeset for help on using the changeset viewer.