Diff for /parser3/src/main/pa_http.C between versions 1.88 and 1.90

version 1.88, 2020/10/12 16:58:55 version 1.90, 2020/10/12 21:55:17
Line 18  volatile const char * IDENT_PA_HTTP_C="$ Line 18  volatile const char * IDENT_PA_HTTP_C="$
   
 #ifdef _MSC_VER  #ifdef _MSC_VER
 #include <windows.h>  #include <windows.h>
   #define socklen_t int
 #else  #else
 #define closesocket close  #define closesocket close
 #endif  #endif
Line 130  public: Line 131  public:
         }          }
   
         size_t first_line(){          size_t first_line(){
                 char *headers=strchr(buf, '\n');                  char *header=strchr(buf, '\n');
                 if(!headers)                  if(!header)
                         return false;                          return false;
   
                 return headers-buf;                  return header-buf;
         }          }
   
         const char *status_code(char *status_line, int &result){          const char *status_code(char *status_line, int &result){
Line 897  File_read_http_result pa_internal_file_r Line 898  File_read_http_result pa_internal_file_r
         }          }
   
         // filling $.cookies          // filling $.cookies
         if(Value *vcookies=vtables->hash().get("SET-COOKIE"))          if(vcookies=vtables->hash().get("SET-COOKIE"))
                 result.headers->put(HTTP_COOKIES_NAME, new VTable(parse_cookies(r, vcookies->get_table())));                  result.headers->put(HTTP_COOKIES_NAME, new VTable(parse_cookies(r, vcookies->get_table())));
   
         // output response          // output response
Line 1040  size_t HTTPD_Connection::read_post(char Line 1041  size_t HTTPD_Connection::read_post(char
         return request->read_post(sock, body, max_bytes);          return request->read_post(sock, body, max_bytes);
 }  }
   
   size_t HTTPD_Connection::send_body(const void *buf, size_t size) {
           if(send(sock, buf, size, 0) != (ssize_t)size) {
                   int no=pa_socks_errno();
                   throw Exception("httpd.timeout", 0, "error sending response: %s (%d)", pa_socks_strerr(no), no);
           }
           return size;
   }
   
 static int sock_on = 1;  static int sock_on = 1;
   
 int HTTPD_Server::bind(const char *host_port){  int HTTPD_Server::bind(const char *host_port){
Line 1071  int HTTPD_Server::bind(const char *host_ Line 1080  int HTTPD_Server::bind(const char *host_
             setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&sock_on, sizeof(sock_on)) ||              setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&sock_on, sizeof(sock_on)) ||
             ::bind(sock, (struct sockaddr*)&me, sizeof(me)) ||              ::bind(sock, (struct sockaddr*)&me, sizeof(me)) ||
             listen(sock, 16)) {              listen(sock, 16)) {
                 close(sock);                  closesocket(sock);
                 int no = pa_socks_errno();                  int no = pa_socks_errno();
                 throw Exception("httpd.bind", 0, "can not bind socket: %s (%d)", pa_socks_strerr(no), no);                  throw Exception("httpd.bind", 0, "can not bind socket: %s (%d)", pa_socks_strerr(no), no);
         }          }
Line 1104  HTTPD_Connection *HTTPD_Server::accept(i Line 1113  HTTPD_Connection *HTTPD_Server::accept(i
         }          }
   
         struct sockaddr_in addr;          struct sockaddr_in addr;
         unsigned int sock_addr_len = sizeof(struct sockaddr_in);          socklen_t sock_addr_len = sizeof(struct sockaddr_in);
         memset(&addr, 0, sock_addr_len);          memset(&addr, 0, sock_addr_len);
   
         int csock = ::accept(sock, (struct sockaddr *)&addr, &sock_addr_len);          int csock = ::accept(sock, (struct sockaddr *)&addr, &sock_addr_len);

Removed from v.1.88  
changed lines
  Added in v.1.90


E-mail: