--- Coro-Mysql/Mysql.pm 2009/05/18 15:19:38 1.1 +++ Coro-Mysql/Mysql.pm 2009/06/01 12:03:21 1.3 @@ -77,7 +77,7 @@ sub writable { &Coro::Handle::FH::writable } BEGIN { - our $VERSION = '0.01'; + our $VERSION = '0.2'; require XSLoader; XSLoader::load Coro::Mysql::, $VERSION; @@ -91,22 +91,28 @@ After that, it returns the patched handle - you should always use the newly returned database handle. +It is safe to call this function on any database handle, but it will only +do anything to L handles, others are returned unchanged. + =cut sub unblock { my ($DBH) = @_; - my $sock = $DBH->{sock}; - open my $fh, "+>&" . $DBH->{sockfd} - or croak "Coro::Mysql unable to clone mysql fd"; + if ($DBH->{Driver}{Name} eq "mysql") { + my $sock = $DBH->{sock}; + + open my $fh, "+>&" . $DBH->{sockfd} + or croak "Coro::Mysql unable to clone mysql fd"; - $fh = Coro::Handle::unblock $fh; + $fh = Coro::Handle::unblock $fh; - _patch $sock, $DBH->{sockfd}, tied ${$fh}; - $DBH->{private_Coro_Mysql} = guard { - _unpatch $sock; - undef $fh; - }; + _patch $sock, $DBH->{sockfd}, tied ${$fh}; + $DBH->{private_Coro_Mysql} = guard { + _unpatch $sock; + undef $fh; + }; + } $DBH }