Merge remote-tracking branch 'ry/v0.10'
authorisaacs <i@izs.me>
Thu, 28 Mar 2013 20:11:04 +0000 (13:11 -0700)
committerisaacs <i@izs.me>
Thu, 28 Mar 2013 20:11:04 +0000 (13:11 -0700)
Conflicts:
src/node.cc
src/node_version.h

1  2 
deps/uv/include/uv.h
doc/api/addons.markdown
lib/tls.js
src/node.cc
src/node_crypto.cc

Simple merge
Simple merge
diff --cc lib/tls.js
Simple merge
diff --cc src/node.cc
@@@ -931,35 -944,40 +944,40 @@@ MakeDomainCallback(const Handle<Object
  
    TryCatch try_catch;
  
-   domain = domain_v->ToObject();
-   assert(!domain.IsEmpty());
-   if (domain->Get(disposed_symbol)->IsTrue()) {
-     // domain has been disposed of.
-     return Undefined(node_isolate);
-   }
-   enter = Local<Function>::Cast(domain->Get(enter_symbol));
-   assert(!enter.IsEmpty());
-   enter->Call(domain, 0, NULL);
+   bool has_domain = domain_v->IsObject();
+   if (has_domain) {
+     domain = domain_v->ToObject();
+     assert(!domain.IsEmpty());
+     if (domain->Get(disposed_symbol)->IsTrue()) {
+       // domain has been disposed of.
 -      return Undefined();
++      return Undefined(node_isolate);
+     }
+     enter = Local<Function>::Cast(domain->Get(enter_symbol));
+     assert(!enter.IsEmpty());
+     enter->Call(domain, 0, NULL);
  
-   if (try_catch.HasCaught()) {
-     FatalException(try_catch);
-     return Undefined(node_isolate);
+     if (try_catch.HasCaught()) {
+       FatalException(try_catch);
 -      return Undefined();
++      return Undefined(node_isolate);
+     }
    }
  
    Local<Value> ret = callback->Call(object, argc, argv);
  
    if (try_catch.HasCaught()) {
      FatalException(try_catch);
 -    return Undefined();
 +    return Undefined(node_isolate);
    }
  
-   exit = Local<Function>::Cast(domain->Get(exit_symbol));
-   assert(!exit.IsEmpty());
-   exit->Call(domain, 0, NULL);
+   if (has_domain) {
+     exit = Local<Function>::Cast(domain->Get(exit_symbol));
+     assert(!exit.IsEmpty());
+     exit->Call(domain, 0, NULL);
  
-   if (try_catch.HasCaught()) {
-     FatalException(try_catch);
-     return Undefined(node_isolate);
+     if (try_catch.HasCaught()) {
+       FatalException(try_catch);
 -      return Undefined();
++      return Undefined(node_isolate);
+     }
    }
  
    if (tick_infobox.length == 0) {
@@@ -1030,13 -1048,11 +1048,11 @@@ MakeCallback(const Handle<Object> objec
               const Handle<String> symbol,
               int argc,
               Handle<Value> argv[]) {
 -  HandleScope scope;
 +  HandleScope scope(node_isolate);
  
    Local<Function> callback = object->Get(symbol).As<Function>();
-   Local<Value> domain = object->Get(domain_symbol);
  
-   // has domain, off with you
-   if (!domain->IsNull() && !domain->IsUndefined())
+   if (using_domains)
      return scope.Close(MakeDomainCallback(object, callback, argc, argv));
    return scope.Close(MakeCallback(object, callback, argc, argv));
  }
@@@ -945,8 -927,13 +945,13 @@@ int Connection::HandleSSLError(const ch
      DEBUG_PRINT("[%p] SSL: %s want read\n", ssl_, func);
      return 0;
  
+   } else if (err == SSL_ERROR_ZERO_RETURN) {
+     handle_->Set(String::New("error"),
+                  Exception::Error(String::New("ZERO_RETURN")));
+     return rv;
    } else {
 -    HandleScope scope;
 +    HandleScope scope(node_isolate);
      BUF_MEM* mem;
      BIO *bio;