Changeset 32730


Ignore:
Timestamp:
Jul 17, 2017, 7:50:49 AM (9 days ago)
Author:
brainslayer
Message:

use the old way again

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/router/httpd/httpd.c

    r32728 r32730  
    601601        char *str;
    602602
    603         char *buf = line;
    604         int lastread = 0;
    605         int finished = 0;
    606         for (;;) {
    607 
    608                 int r = wfread(buf, 1, LINE_LEN - lastread, conn_fp);
    609                 if (r < 0 && (errno == EINTR || errno == EAGAIN))
    610                         continue;
    611                 if (r <= 0)
     603        for (cnt = 0; cnt < 10; cnt++) {
     604                str = wfgets(line, LINE_LEN, conn_fp);
     605                if (strlen(line) > 0)
    612606                        break;
    613                 buf += r;
    614                 lastread += r;
    615                 if (strstr(line, "\015\012\015\012") != NULL || strstr(line, "\012\012") != NULL) {
    616                         finished = 1;
    617                         break;
    618                 }
    619         }
    620 
    621         if (!strlen(line) || !finished) {
     607        }
     608
     609        if (!strlen(line)) {
    622610                send_error(conn_fp, 408, "Request Timeout", NULL, "No request appeared within a reasonable time period.");
    623611
     
    651639        /* Parse the rest of the request headers. */
    652640
    653         while (cur < (line + LINE_LEN)) //jimmy,https,8/4/2003
     641        while (wfgets(cur, line + LINE_LEN - cur, conn_fp) != 0)        //jimmy,https,8/4/2003
    654642        {
     643
    655644                if (strcmp(cur, "\n") == 0 || strcmp(cur, "\r\n") == 0) {
    656645                        break;
     
    659648                        cp += strspn(cp, " \t");
    660649                        authorization = cp;
    661                         for (cp = cur; *cp && *cp != '\n'; cp++) ;
    662                         *cp = '\0';
    663                         cur = ++cp;
    664 
     650                        cur = cp + strlen(cp) + 1;
    665651                } else if (strncasecmp(cur, "Referer:", 8) == 0) {
    666652                        cp = &cur[8];
    667653                        cp += strspn(cp, " \t");
    668654                        referer = cp;
    669                         for (cp = cur; *cp && *cp != '\n'; cp++) ;
    670                         *cp = '\0';
    671                         cur = ++cp;
    672 
     655                        cur = cp + strlen(cp) + 1;
    673656                } else if (strncasecmp(cur, "Host:", 5) == 0) {
    674657                        cp = &cur[5];
    675658                        cp += strspn(cp, " \t");
    676659                        host = cp;
    677                         for (cp = cur; *cp && *cp != '\n'; cp++) ;
    678                         *cp = '\0';
    679                         cur = ++cp;
    680 
     660                        cur = cp + strlen(cp) + 1;
    681661                } else if (strncasecmp(cur, "Content-Length:", 15) == 0) {
    682662                        cp = &cur[15];
    683663                        cp += strspn(cp, " \t");
    684664                        cl = strtoul(cp, NULL, 0);
    685                         for (cp = cur; *cp && *cp != '\n'; cp++) ;
    686                         *cp = '\0';
    687                         cur = ++cp;
    688665
    689666                } else if ((cp = strstr(cur, "boundary="))) {
     
    696673                        cp += strspn(cp, " \t");
    697674                        useragent = cp;
    698 
    699                         for (cp = cur; *cp && *cp != '\n'; cp++) ;
    700                         *cp = '\0';
    701                         cur = ++cp;
    702 
     675                        cur = cp + strlen(cp) + 1;
    703676                } else if (strncasecmp(cur, "Accept-Language:", 16) == 0) {
    704677                        cp = &cur[17];
    705678                        cp += strspn(cp, " \t");
    706679                        language = cp;
    707                         for (cp = cur; *cp && *cp != '\n'; cp++) ;
    708                         *cp = '\0';
    709                         cur = ++cp;
    710                 } else {
    711                         // skip line                   
    712                         for (cp = cur; *cp && *cp != '\n'; cp++) ;
    713                         *cp = '\0';
    714                         cur = ++cp;
    715 
     680                        cur = cp + strlen(cp) + 1;
    716681                }
    717682        }
Note: See TracChangeset for help on using the changeset viewer.