[PATCH] add restart to bearerbox
Alexander Malysh <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Organization | Centrium GmbH |
| Message-ID | <[email protected]> |
Hi list, attached patch adds restart functionality to bearerbox and will fix small bug in bb_boxc.c (not closing of listen socket while shutting down). Please look in it and vote ;) -- Best Regards / Mit besten Grüßen aus Köln Dipl.-Ing. Alexander Malysh ___________________________________ Centrium GmbH Ehrenstrasse 2 50672 Köln Fon: +49 (0221) 277 49 240 Fax: +49 (0221) 277 49 109 email: [email protected] web: http://www.centrium.de msn: [email protected]
bearerbox_restart.diff
(text/x-diff, 2.9 KB)
Index: gw/bb_boxc.c
===================================================================
RCS file: /home/cvs/gateway/gw/bb_boxc.c,v
retrieving revision 1.61
diff -a -u -r1.61 bb_boxc.c
--- gw/bb_boxc.c 5 Feb 2003 23:49:30 -0000 1.61
+++ gw/bb_boxc.c 22 Feb 2003 21:02:49 -0000
@@ -738,6 +738,8 @@
while(list_wait_until_nonempty(smsbox_list)!= -1)
sleep(1);
+ /* close listen socket */
+ close(fd);
list_destroy(smsbox_list, NULL);
smsbox_list = NULL;
@@ -785,7 +787,9 @@
/* wait for wdp_to_wapboxes to exit */
while(list_consume(wapbox_list)!=NULL)
;
-
+
+ /* close listen socket */
+ close(fd);
list_destroy(wapbox_list, NULL);
wapbox_list = NULL;
Index: gw/bb_http.c
===================================================================
RCS file: /home/cvs/gateway/gw/bb_http.c,v
retrieving revision 1.41
diff -a -u -r1.41 bb_http.c
--- gw/bb_http.c 20 Nov 2002 00:36:50 -0000 1.41
+++ gw/bb_http.c 22 Feb 2003 21:02:50 -0000
@@ -142,6 +142,21 @@
return octstr_create("Running resumed");
}
+static Octstr *httpd_restart(List *cgivars)
+{
+ Octstr *reply;
+ if ((reply = httpd_check_authorization(cgivars, 0))!= NULL) return reply;
+ if ((reply = httpd_check_status())!= NULL) return reply;
+
+ if (bb_status == BB_SHUTDOWN) {
+ bb_status = BB_DEAD;
+ gwthread_wakeup_all();
+ return octstr_create("Trying harder to restart");
+ }
+ bb_restart();
+ return octstr_create("Restarting.....");
+}
+
static Octstr *httpd_flush_dlr(List *cgivars)
{
Octstr *reply;
@@ -258,6 +273,9 @@
} else if (octstr_str_compare(url, "/cgi-bin/resume")==0
|| octstr_str_compare(url, "/resume")==0) {
reply = httpd_resume(cgivars);
+ } else if (octstr_str_compare(url, "/cgi-bin/restart")==0
+ || octstr_str_compare(url, "/restart")==0) {
+ reply = httpd_restart(cgivars);
} else if (octstr_str_compare(url, "/cgi-bin/flush-dlr")==0
|| octstr_str_compare(url, "/flush-dlr")==0) {
reply = httpd_flush_dlr(cgivars);
@@ -268,7 +286,7 @@
|| octstr_str_compare(url, "/start-smsc")==0) {
reply = httpd_restart_smsc(cgivars);
/*
- * reconfig? restart?
+ * reconfig?
*/
} else {
reply = octstr_format("Unknown command %S", url);
Index: gw/bearerbox.c
===================================================================
RCS file: /home/cvs/gateway/gw/bearerbox.c,v
retrieving revision 1.132
diff -a -u -r1.132 bearerbox.c
--- gw/bearerbox.c 6 Sep 2002 12:01:27 -0000 1.132
+++ gw/bearerbox.c 22 Feb 2003 21:02:51 -0000
@@ -65,7 +65,7 @@
static Mutex *status_mutex;
Mutex *boxid_mutex;
static time_t start_time;
-
+int restart = 0;
/* to avoid copied code */
@@ -524,6 +524,9 @@
dlr_shutdown();
gwlib_shutdown();
+ if (restart == 1)
+ execvp(argv[0],argv);
+
return 0;
}
@@ -636,7 +639,8 @@
int bb_restart(void)
{
- return -1;
+ restart = 1;
+ return bb_shutdown();
}
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA+V+V/nX3e5W+uJ0ERAsPhAKCY00sP+z+pPK6LBakq7DRDWnxyxQCgxvsB NnOr1L8U1yd0DtpNLiSJjMY= =bDW7 -----END PGP SIGNATURE-----