Changeset 4354cd


Ignore:
Timestamp:
2011-12-23 08:37:20 (2 years ago)
Author:
Poul-Henning Kamp <phk@…>
Branches:
master, 4.0, experimental-ims
Children:
c0442f
Parents:
bd7654
git-author:
Poul-Henning Kamp <phk@…> (2011-12-23 08:37:20)
git-committer:
Poul-Henning Kamp <phk@…> (2011-12-23 08:37:20)
Message:

Delete the session directly if we never manage to collect a full
request header: There is no point in going through cnt_done to do that.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • bin/varnishd/cache/cache_center.c

    r2c90d7 r4354cd  
    8787DOT     wait [ 
    8888DOT             shape=box 
    89 DOT             label="wait for\nrequest" 
     89DOT             label="cnt_wait:\nwait for\nrequest" 
    9090DOT     ] 
    9191DOT     herding [shape=hexagon] 
    9292DOT     wait -> start [label="got req"] 
    93 DOT     wait -> DONE [label="errors"] 
     93DOT     wait -> "SES_Delete()" [label="errors"] 
    9494DOT     wait -> herding [label="timeout"] 
    9595DOT } 
     
    120120                j = poll(pfd, 1, tmo); 
    121121                assert(j >= 0); 
     122                now = VTIM_real(); 
    122123                if (j != 0) 
    123124                        i = HTC_Rx(sp->htc); 
    124125                else 
    125126                        i = HTC_Complete(sp->htc); 
    126                 if (i == -1) { 
    127                         SES_Close(sp, "EOF"); 
    128                         break; 
    129                 } 
    130                 if (i == -2) { 
    131                         SES_Close(sp, "overflow"); 
    132                         break; 
    133                 } 
    134                 now = VTIM_real(); 
    135127                if (i == 1) { 
    136128                        /* Got it, run with it */ 
    137129                        sp->t_req = now; 
    138                         sp->step = STP_START; 
    139                         return (0); 
     130                        break; 
     131                } 
     132                if (i == -1) { 
     133                        SES_Delete(sp, "EOF", now); 
     134                        return (1); 
     135                } 
     136                if (i == -2) { 
     137                        SES_Delete(sp, "overflow", now); 
     138                        return (1); 
    140139                } 
    141140                if (i == -3) { 
     
    143142                        when = sp->t_idle + cache_param->timeout_idle; 
    144143                        if (when < now) { 
    145                                 SES_Close(sp, "timeout"); 
    146                                 break; 
     144                                SES_Delete(sp, "timeout", now); 
     145                                return (1); 
    147146                        } 
    148147                        when = sp->t_idle + cache_param->timeout_linger; 
     
    160159                        tmo = (int)(1e3 * (when - now)); 
    161160                        if (when < now || tmo == 0) { 
    162                                 SES_Close(sp, "req timeout"); 
    163                                 break; 
     161                                SES_Delete(sp, "req timeout", now); 
     162                                return (1); 
    164163                        } 
    165164                } 
    166165        } 
    167         sp->step = STP_DONE; 
     166        sp->step = STP_START; 
    168167        return (0); 
    169168} 
Note: See TracChangeset for help on using the changeset viewer.