<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>test/async_query_with_block_test.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -861,23 +861,6 @@ static void validate_async_query( VALUE obj )
     }
 }
 
-/*
-static VALUE connection_dropped( VALUE obj )
-{
-    MYSQL* m = GetHandler(obj);
-    if( (mysql_errno(m) == CR_SERVER_LOST ) || ( mysql_errno(m) == CR_SERVER_GONE_ERROR ) || ( mysql_errno(m) == ER_SERVER_SHUTDOWN) ){
-      return Qtrue;
-    }else{
-      return Qfalse;
-    }
-}
-*/
-
-static void async_reconnect( VALUE obj )
-{
-	connect(obj);
-}
-
 static VALUE simulate_disconnect( VALUE obj )
 {
   MYSQL* m = GetHandler(obj);
@@ -900,7 +883,6 @@ static VALUE send_query(VALUE obj, VALUE sql)
 
     if (mysql_send_query(m, RSTRING_PTR(sql), RSTRING_LEN(sql)) != 0){
       mysql_raise(m);
-	  /*( connection_dropped(obj) == Qtrue ) ? async_reconnect(obj) : mysql_raise(m);*/
 	}
 	
 	async_in_progress_set( obj, Qtrue );
@@ -911,13 +893,14 @@ static VALUE send_query(VALUE obj, VALUE sql)
 static VALUE get_result(VALUE obj)
 {
     MYSQL* m = GetHandler(obj);
+
+    async_in_progress_set( obj, Qfalse );
+
     if (GetMysqlStruct(obj)-&gt;connection == Qfalse) {
         rb_raise(eMysql, &quot;query: not connected&quot;);
     }
 	if (mysql_read_query_result(m) != 0)
 	    mysql_raise(m);
-	
-	async_in_progress_set( obj, Qfalse );
     
     if (GetMysqlStruct(obj)-&gt;query_with_result == Qfalse)
       	return obj;
@@ -946,22 +929,23 @@ static void schedule_query(VALUE obj, VALUE timeout)
 /* async_query(sql,timeout=nil) */
 static VALUE async_query(int argc, VALUE* argv, VALUE obj)
 {
-  MYSQL* m = GetHandler(obj); 
-  VALUE sql, timeout;
+    MYSQL* m = GetHandler(obj); 
+    VALUE sql, timeout;
 
-  rb_scan_args(argc, argv, &quot;11&quot;, &amp;sql, &amp;timeout);
+    rb_scan_args(argc, argv, &quot;11&quot;, &amp;sql, &amp;timeout);
 
-  async_in_progress_set( obj, Qfalse );
+    async_in_progress_set( obj, Qfalse );
 
-  send_query(obj,sql);
+    send_query(obj,sql);
 
-  if (GetMysqlStruct(obj)-&gt;query_with_result == Qfalse){
-    async_in_progress_set( obj, Qfalse );
-    return obj;
-  } else {
     schedule_query(obj, timeout);
-    return get_result(obj);
-  }
+    
+    if (rb_block_given_p()) {
+      rb_yield( get_result(obj) );
+      return obj; 
+    }else{
+      return get_result(obj); 
+    }  
 }
 
 #if MYSQL_VERSION_ID &gt;= 40100</diff>
      <filename>ext/mysql.c</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4e5967bd24d832a26e89de6aa578205c3dde2a0c</id>
    </parent>
  </parents>
  <author>
    <name>Lourens Naude</name>
    <email>lourens@methodmissing.com</email>
  </author>
  <url>http://github.com/oldmoe/mysqlplus/commit/f57c2a65761cb2cbf5cccca231fed86c9ad0cbfc</url>
  <id>f57c2a65761cb2cbf5cccca231fed86c9ad0cbfc</id>
  <committed-date>2008-10-07T21:17:01-07:00</committed-date>
  <authored-date>2008-10-07T21:17:01-07:00</authored-date>
  <message>Let #c_async_query support a block syntax that yields the result; ensure async in progress is negated by #get_result</message>
  <tree>727505c13978ddb3f041d9d8da1b43e0b5341ebd</tree>
  <committer>
    <name>Lourens Naude</name>
    <email>lourens@methodmissing.com</email>
  </committer>
</commit>
