summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2009-07-29 12:10:07 -0400
committerEliot Horowitz <eliot@10gen.com>2009-07-29 12:10:07 -0400
commit982dd76d576c19d3ccac0d0b6c7788dc11a12c50 (patch)
tree12800849279f9e086668e0b774c25d82fb3fba58
parentdd9ba41ed4b77301fcc46d3d35cade8b415826af (diff)
parent384f32a70e7feb79961b21aef31017fc858d8d82 (diff)
downloadmongo-982dd76d576c19d3ccac0d0b6c7788dc11a12c50.tar.gz
Merge branch 'master' of git@github.com:mongodb/mongo
-rw-r--r--db/db.cpp42
-rw-r--r--db/dbeval.cpp2
2 files changed, 42 insertions, 2 deletions
diff --git a/db/db.cpp b/db/db.cpp
index 021b66a9ed0..bd70b551aa3 100644
--- a/db/db.cpp
+++ b/db/db.cpp
@@ -829,7 +829,47 @@ namespace mongo {
}
#else
- void setupSignals() {}
+void ctrlCTerminate() {
+ log() << "got kill or ctrl c signal, will terminate after current cmd ends" << endl;
+ {
+ dblock lk;
+ log() << "now exiting" << endl;
+ exit(12);
+ }
+}
+BOOL CtrlHandler( DWORD fdwCtrlType )
+{
+ switch( fdwCtrlType )
+ {
+ case CTRL_C_EVENT:
+ rawOut("Ctrl-C signal\n");
+ ctrlCTerminate();
+ return( TRUE );
+ case CTRL_CLOSE_EVENT:
+ rawOut("CTRL_CLOSE_EVENT signal\n");
+ ctrlCTerminate();
+ return( TRUE );
+ case CTRL_BREAK_EVENT:
+ rawOut("CTRL_BREAK_EVENT signal\n");
+ ctrlCTerminate();
+ return TRUE;
+ case CTRL_LOGOFF_EVENT:
+ rawOut("CTRL_LOGOFF_EVENT signal (ignored)\n");
+ return FALSE;
+ case CTRL_SHUTDOWN_EVENT:
+ rawOut("CTRL_SHUTDOWN_EVENT signal (ignored)\n");
+ return FALSE;
+ default:
+ return FALSE;
+ }
+}
+
+ void setupSignals() {
+ if( SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ) )
+ ;
+ else
+ massert("Couldn't register Ctrl-C handler", false);
+ }
#endif
} // namespace mongo
diff --git a/db/dbeval.cpp b/db/dbeval.cpp
index 982a0ee8c1c..62b7cee5c05 100644
--- a/db/dbeval.cpp
+++ b/db/dbeval.cpp
@@ -115,7 +115,7 @@ namespace mongo {
else if ( type == jstNULL || type == Undefined )
result.appendNull("retval");
else if ( type == Date )
- result.appendDate( "retval" , s->getNumber( "return" ) );
+ result.appendDate( "retval" , (unsigned long long) s->getNumber( "return" ) );
else {
stringstream temp;
temp << "can't handle return type from db.eval:";