ry / ebb fork watch download tarball
public
Description: web server
Homepage: http://ebb.rubyforge.org
Clone URL: git://github.com/ry/ebb.git
Search Repo:
Fixed error that occurs while stopping the server
Ryan Dahl (author)
Sat Feb 09 09:57:35 -0800 2008
commit  a1cb4f1217379fd3115ceaca533e5319471f71e0
tree    2f706b9c8feb5a2aea943aab18e96b37b268f371
parent  60c2af505ddde70710a36aa636a6c6573b7bb3cc
0
...
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
389
390
391
392
393
394
...
372
373
374
 
 
 
 
 
 
 
 
 
 
 
 
 
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
 
 
 
391
392
393
0
@@ -372,23 +372,22 @@ void ebb_server_free(ebb_server *server)
0
 
0
 void ebb_server_stop(ebb_server *server)
0
 {
0
- ebb_info("Stopping ebb server");
0
- assert(server->open);
0
-
0
- int i;
0
- ebb_client *client;
0
- for(i=0; i < EBB_MAX_CLIENTS; i++)
0
- ebb_client_close(client);
0
-
0
- if(server->request_watcher) {
0
- printf("killing request watcher\n");
0
- ev_io_stop(server->loop, server->request_watcher);
0
- free(server->request_watcher);
0
- server->request_watcher = NULL;
0
+ if(server->open) {
0
+ ebb_info("Stopping Ebb server");
0
+ int i;
0
+ ebb_client *client;
0
+ for(i=0; i < EBB_MAX_CLIENTS; i++)
0
+ ebb_client_close(client);
0
+
0
+ if(server->request_watcher) {
0
+ ev_io_stop(server->loop, server->request_watcher);
0
+ free(server->request_watcher);
0
+ server->request_watcher = NULL;
0
+ }
0
+
0
+ close(server->fd);
0
+ server->open = FALSE;
0
   }
0
-
0
- close(server->fd);
0
- server->open = FALSE;
0
 }
0
 
0
 
...
76
77
78
79
80
81
82
 
 
 
 
 
83
84
85
...
89
90
91
 
 
92
93
94
...
76
77
78
 
 
 
 
79
80
81
82
83
84
85
86
...
90
91
92
93
94
95
96
97
0
@@ -76,10 +76,11 @@ module Ebb
0
     end
0
     
0
     def start
0
- trap('INT') { puts "got INT"; stop }
0
- trap('TERM') { puts "got TERM"; stop }
0
- _start
0
- while process_connections
0
+ trap('INT') { @running = false }
0
+ trap('TERM') { @running = false }
0
+ really_start
0
+ @running = true
0
+ while process_connections and @running
0
         unless @waiting_clients.empty?
0
           if $debug
0
             puts "#{@waiting_clients.length} waiting clients" if @waiting_clients.length > 1
0
@@ -89,6 +90,8 @@ module Ebb
0
           client.start_writing
0
         end
0
       end
0
+ ensure
0
+ stop
0
     end
0
   end
0
   
...
217
218
219
220
 
221
222
223
...
217
218
219
 
220
221
222
223
0
@@ -217,7 +217,7 @@ void Init_ebb_ext()
0
   rb_define_alloc_func(cServer, server_alloc);
0
   rb_define_method(cServer, "init", server_init, 2);
0
   rb_define_method(cServer, "process_connections", server_process_connections, 0);
0
- rb_define_method(cServer, "_start", server_start, 0);
0
+ rb_define_method(cServer, "really_start", server_start, 0);
0
   rb_define_method(cServer, "stop", server_stop, 0);
0
   
0
   rb_define_method(cClient, "write", client_write, 1);

Comments

    No one has commented yet.