Commit 123c92c9 authored by Yang Tse's avatar Yang Tse
Browse files

sws.c: replace sleep() usage with wait_ms()

parent d28411c3
Loading
Loading
Loading
Loading
+38 −20
Original line number Original line Diff line number Diff line
@@ -1083,18 +1083,21 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
    else {
    else {
      logmsg("Sent off %zd bytes", written);
      logmsg("Sent off %zd bytes", written);
    }
    }
    if (req->writedelay) {
      logmsg("Pausing %d seconds", req->writedelay);
      sleep(req->writedelay);
    }
    /* write to file as well */
    /* write to file as well */
    fwrite(buffer, 1, (size_t)written, dump);
    fwrite(buffer, 1, (size_t)written, dump);
    if(got_exit_signal)
      break;


    count -= written;
    count -= written;
    buffer += written;
    buffer += written;
  } while(count>0);

    if(req->writedelay) {
      int quarters = req->writedelay * 4;
      logmsg("Pausing %d seconds", req->writedelay);
      while((quarters > 0) && !got_exit_signal) {
        quarters--;
        wait_ms(250);
      }
    }
  } while((count > 0) && !got_exit_signal);


  do {
  do {
    res = fclose(dump);
    res = fclose(dump);
@@ -1137,11 +1140,9 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
        if(!strcmp("wait", command)) {
        if(!strcmp("wait", command)) {
          logmsg("Told to sleep for %d seconds", num);
          logmsg("Told to sleep for %d seconds", num);
          quarters = num * 4;
          quarters = num * 4;
          while(quarters > 0) {
          while((quarters > 0) && !got_exit_signal) {
            quarters--;
            quarters--;
            res = wait_ms(250);
            res = wait_ms(250);
            if(got_exit_signal)
              break;
            if(res) {
            if(res) {
              /* should not happen */
              /* should not happen */
              error = SOCKERRNO;
              error = SOCKERRNO;
@@ -1250,6 +1251,11 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)
  }
  }
#endif /* ENABLE_IPV6 */
#endif /* ENABLE_IPV6 */


  if(got_exit_signal) {
    sclose(serverfd);
    return CURL_SOCKET_BAD;
  }

  if(rc) {
  if(rc) {
    error = SOCKERRNO;
    error = SOCKERRNO;
    logmsg("Error connecting to server port %hu: (%d) %s",
    logmsg("Error connecting to server port %hu: (%d) %s",
@@ -1278,7 +1284,7 @@ static curl_socket_t connect_to(const char *ipaddr, unsigned short port)


#define data_or_ctrl(x) ((x)?"DATA":"CTRL")
#define data_or_ctrl(x) ((x)?"DATA":"CTRL")


static int http_connect(curl_socket_t infd,
static void http_connect(curl_socket_t infd,
                         curl_socket_t rootfd,
                         curl_socket_t rootfd,
                         struct httprequest *req,
                         struct httprequest *req,
                         const char *ipaddr)
                         const char *ipaddr)
@@ -1293,17 +1299,25 @@ static int http_connect(curl_socket_t infd,
  bool poll_client[2] = { TRUE, TRUE };
  bool poll_client[2] = { TRUE, TRUE };
  bool poll_server[2] = { TRUE, TRUE };
  bool poll_server[2] = { TRUE, TRUE };
  int control=0;
  int control=0;
  int quarters;
  int i;
  int i;


  sleep(1); /* sleep here to make sure the client gets the CONNECT response
  /* sleep here to make sure the client gets the CONNECT response
     first and separate from the data that might follow here */
     first and separate from the data that might follow here */
  quarters = 4;
  while((quarters > 0) && !got_exit_signal) {
    quarters--;
    wait_ms(250);
  }
  if(got_exit_signal)
    return;


  clientfd[0] = infd;
  clientfd[0] = infd;
  clientfd[1] = CURL_SOCKET_BAD;
  clientfd[1] = CURL_SOCKET_BAD;


  serverfd[0] = connect_to(ipaddr, req->connect_port);
  serverfd[0] = connect_to(ipaddr, req->connect_port);
  if(CURL_SOCKET_BAD == serverfd[0])
  if(CURL_SOCKET_BAD == serverfd[0])
    return 1; /* failure */
    return;
  serverfd[1] = CURL_SOCKET_BAD; /* nothing there (yet) */
  serverfd[1] = CURL_SOCKET_BAD; /* nothing there (yet) */


  /* connected, now tunnel */
  /* connected, now tunnel */
@@ -1364,7 +1378,8 @@ static int http_connect(curl_socket_t infd,
        struct httprequest req2;
        struct httprequest req2;
        datafd = accept(rootfd, NULL, NULL);
        datafd = accept(rootfd, NULL, NULL);
        if(CURL_SOCKET_BAD == datafd)
        if(CURL_SOCKET_BAD == datafd)
          return 4; /* error! */
          return;

        logmsg("====> Client connect DATA");
        logmsg("====> Client connect DATA");
        req2.pipelining = FALSE;
        req2.pipelining = FALSE;
        if(get_request(datafd, &req2))
        if(get_request(datafd, &req2))
@@ -1482,7 +1497,11 @@ static int http_connect(curl_socket_t infd,
        if(clientfd[precontrol] != CURL_SOCKET_BAD)
        if(clientfd[precontrol] != CURL_SOCKET_BAD)
          shutdown(clientfd[precontrol], SHUT_RDWR);
          shutdown(clientfd[precontrol], SHUT_RDWR);


        sleep(1);
        quarters = 4;
        while((quarters > 0) && !got_exit_signal) {
          quarters--;
          wait_ms(250);
        }


        if(serverfd[precontrol] != CURL_SOCKET_BAD)
        if(serverfd[precontrol] != CURL_SOCKET_BAD)
          sclose(serverfd[precontrol]);
          sclose(serverfd[precontrol]);
@@ -1504,7 +1523,6 @@ static int http_connect(curl_socket_t infd,
      sclose(clientfd[i]);
      sclose(clientfd[i]);
  }
  }
#endif
#endif
  return 0;
}
}


int main(int argc, char *argv[])
int main(int argc, char *argv[])