diff options
author | Eliot Horowitz <eliot@10gen.com> | 2009-07-29 12:10:07 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2009-07-29 12:10:07 -0400 |
commit | 982dd76d576c19d3ccac0d0b6c7788dc11a12c50 (patch) | |
tree | 12800849279f9e086668e0b774c25d82fb3fba58 | |
parent | dd9ba41ed4b77301fcc46d3d35cade8b415826af (diff) | |
parent | 384f32a70e7feb79961b21aef31017fc858d8d82 (diff) | |
download | mongo-982dd76d576c19d3ccac0d0b6c7788dc11a12c50.tar.gz |
Merge branch 'master' of git@github.com:mongodb/mongo
-rw-r--r-- | db/db.cpp | 42 | ||||
-rw-r--r-- | db/dbeval.cpp | 2 |
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:"; |