diff --git a/xCAT-server-2.0/lib/xcat/plugins/blade.pm b/xCAT-server-2.0/lib/xcat/plugins/blade.pm index 7af1093dd..0b85db008 100644 --- a/xCAT-server-2.0/lib/xcat/plugins/blade.pm +++ b/xCAT-server-2.0/lib/xcat/plugins/blade.pm @@ -1158,6 +1158,7 @@ sub dompa { } print $out freeze([\%err]); print $out "\nENDOFFREEZE6sK4ci\n"; + yield; return 1,"General error establishing SNMP communication"; } my $tmp = $session->get([$mmprimoid.".1"]); @@ -1197,6 +1198,7 @@ sub dompa { print $out freeze([\%output]); print $out "\nENDOFFREEZE6sK4ci\n"; } + yield; } #my $msgtoparent=freeze(\@outhashes); # = XMLout(\%output,RootName => 'xcatresponse'); #print $out $msgtoparent; #$node.": $_\n"; diff --git a/xCAT-server-2.0/lib/xcat/plugins/ipmi.pm b/xCAT-server-2.0/lib/xcat/plugins/ipmi.pm index e9741b382..a7e11a14a 100644 --- a/xCAT-server-2.0/lib/xcat/plugins/ipmi.pm +++ b/xCAT-server-2.0/lib/xcat/plugins/ipmi.pm @@ -4581,6 +4581,7 @@ sub donode { print $outfd freeze([\%output]); print $outfd "\nENDOFFREEZE6sK4ci\n"; } + yield; #my $msgtoparent=freeze(\@outhashes); # print $outfd $msgtoparent; } diff --git a/xCAT-server-2.0/sbin/xcatd b/xCAT-server-2.0/sbin/xcatd index b84e263c1..0d16fa15c 100755 --- a/xCAT-server-2.0/sbin/xcatd +++ b/xCAT-server-2.0/sbin/xcatd @@ -258,7 +258,7 @@ if ($inet6support) { until ($quit) { eval { while (1) { - until ($select->can_read(5)) {if ($quit) { last; }} #Wait for data + until ($select->can_read(5)) { if ($quit) { last; }; yield; } #Wait for data while ($select->can_read(0)) { #Pull all buffer data that can be pulled $part = $socket->recv($data,1500); ($sport,$client) = sockaddr_in($part); @@ -629,6 +629,7 @@ sub dispatch_callback { } else { print $dispatch_parentfd freeze($rsp); print $dispatch_parentfd "\nENDOFFREEZE6sK6xa\n"; + yield; #This has to happen before next line could possibly work anyway <$dispatch_parentfd>; #Block until parent acks data } }