/[hydra]/hydra/src/request.c
ViewVC logotype

Diff of /hydra/src/request.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by nmav, Mon Sep 23 12:48:59 2002 UTC revision 1.5 by nmav, Mon Sep 23 17:56:41 2002 UTC
# Line 81  request *new_request(server_params* para Line 81  request *new_request(server_params* para
81   * does some basic initialization and adds it to the ready queue;.   * does some basic initialization and adds it to the ready queue;.
82   */   */
83    
84  void get_request(server_params* params, socket_type server_s)  void get_request(server_params* params, socket_type *server_s)
85  {  {
86      int fd;                     /* socket */      int fd;                     /* socket */
87      struct SOCKADDR remote_addr; /* address */      struct SOCKADDR remote_addr; /* address */
# Line 99  void get_request(server_params* params, Line 99  void get_request(server_params* params,
99       * 0 or 1, and we have 2 mutexes, one for the secure port,       * 0 or 1, and we have 2 mutexes, one for the secure port,
100       * and one of the normal http port.       * and one of the normal http port.
101       */       */
102      pthread_mutex_lock( &accept_mutex[ server_s.secure]);      pthread_mutex_lock( &accept_mutex[ server_s->secure]);
103  #endif  #endif
104    
105      fd = accept(server_s.socket, (struct sockaddr *) &remote_addr,      fd = accept(server_s->socket, (struct sockaddr *) &remote_addr,
106                  &remote_addrlen);                  &remote_addrlen);
107    
108  #ifdef ENABLE_SMP  #ifdef ENABLE_SMP
109      pthread_mutex_unlock( &accept_mutex[ server_s.secure]);      pthread_mutex_unlock( &accept_mutex[ server_s->secure]);
110  #endif  #endif
111    
112      if (fd == -1) {      if (fd == -1) {
# Line 115  void get_request(server_params* params, Line 115  void get_request(server_params* params,
115              WARN("accept");              WARN("accept");
116          else          else
117              /* no requests */              /* no requests */
118              server_s.pending_requests = 0;              server_s->pending_requests = 0;
119          return;          return;
120      }      }
121      if (fd >= FD_SETSIZE) {      if (fd >= FD_SETSIZE) {
# Line 159  void get_request(server_params* params, Line 159  void get_request(server_params* params,
159  #endif  #endif
160    
161  #ifdef ENABLE_SSL  #ifdef ENABLE_SSL
162      if ( server_s.secure) {      if ( server_s->secure) {
163          ssl_state = initialize_ssl_session();          ssl_state = initialize_ssl_session();
164          if (ssl_state == NULL) {          if (ssl_state == NULL) {
165                  WARN("Could not initialize ssl state.");                  WARN("Could not initialize ssl state.");
# Line 187  void get_request(server_params* params, Line 187  void get_request(server_params* params,
187      conn->fd = fd;      conn->fd = fd;
188      conn->ssl_state = ssl_state;      conn->ssl_state = ssl_state;
189    
190      if (server_s.secure != 0) conn->secure = 1;      if (server_s->secure != 0) conn->secure = 1;
191      else conn->secure = 0;      else conn->secure = 0;
192    
193      if ( server_s.secure != 0)      if ( server_s->secure != 0)
194          conn->status = FINISH_HANDSHAKE;          conn->status = FINISH_HANDSHAKE;
195      else conn->status = READ_HEADER;      else conn->status = READ_HEADER;
196    
# Line 246  void get_request(server_params* params, Line 246  void get_request(server_params* params,
246    
247      params->status.requests++;      params->status.requests++;
248    
249  #ifdef USE_TCPNODELAY  #ifdef HAVE_TCP_CORK
     /* Thanks to Jef Poskanzer <jef@acme.com> for this tweak */  
250      {      {
251          int one = 1;          int one = 1;
252          if (setsockopt(conn->fd, IPPROTO_TCP, TCP_NODELAY,          if (setsockopt(conn->fd, IPPROTO_TCP, TCP_CORK,
253                         (void *) &one, sizeof (one)) == -1) {                         (void *) &one, sizeof (one)) == -1) {
254              DIE("setsockopt: unable to set TCP_NODELAY");              WARN("setsockopt: unable to set TCP_CORK");
255          }          }
256    
257      }      }
258  #endif  #endif /* TCP_CORK */
259    
260    
261  #ifndef NO_RATE_LIMIT  #ifndef NO_RATE_LIMIT
262      if (conn->fd > max_connections) {      if (conn->fd > max_connections) {
263          send_r_service_unavailable(conn);          send_r_service_unavailable(conn);
264          conn->status = DONE;          conn->status = DONE;
265          server_s.pending_requests = 0;          server_s->pending_requests = 0;
266      }      }
267  #endif                          /* NO_RATE_LIMIT */  #endif                          /* NO_RATE_LIMIT */
268    
# Line 442  static void free_request( server_params Line 442  static void free_request( server_params
442          gnutls_deinit( req->ssl_state);          gnutls_deinit( req->ssl_state);
443      }      }
444  #endif  #endif
445        /* Needed when TCP_CORK is used... */    
446        socket_flush( req->fd);
447    
448      close(req->fd);      close(req->fd);
449    
# Line 462  static void free_request( server_params Line 464  static void free_request( server_params
464   * ready list for more procesing.   * ready list for more procesing.
465   */   */
466    
467  void process_requests(server_params* params, socket_type server_s)  void process_requests(server_params* params, socket_type *server_s)
468  {  {
469      int retval = 0;      int retval = 0;
470      request *current, *trailer;      request *current, *trailer;
471    
472      if (server_s.pending_requests) {      if (server_s->pending_requests) {
473          get_request(params, server_s);          get_request(params, server_s);
474  #ifdef ORIGINAL_BEHAVIOR  #ifdef ORIGINAL_BEHAVIOR
475          server_s.pending_requests = 0;          server_s->pending_requests = 0;
476  #endif  #endif
477      }      }
478    
# Line 561  void process_requests(server_params* par Line 563  void process_requests(server_params* par
563           * if we are on the last request, and get_request is successful,           * if we are on the last request, and get_request is successful,
564           * current->next is valid!           * current->next is valid!
565           */           */
566          if (server_s.pending_requests)          if (server_s->pending_requests)
567              get_request(params, server_s);              get_request(params, server_s);
568    
569          switch (retval) {          switch (retval) {

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26