@@ -450,8 +450,13 @@ NetHandler::mainNetEvent(int event, Event *e)
450450 if (cop_list.in (vc)) {
451451 cop_list.remove (vc);
452452 }
453- if (get_ev_events (pd, x) & ( EVENTIO_READ | EVENTIO_ERROR) ) {
453+ if (get_ev_events (pd, x) & EVENTIO_READ) {
454454 vc->read .triggered = 1 ;
455+ if (get_ev_events (pd, x) & EVENTIO_ERROR) {
456+ vc->read .error = 1 ;
457+ } else {
458+ vc->read .error = 0 ;
459+ }
455460 if (!read_ready_list.in (vc)) {
456461 read_ready_list.enqueue (vc);
457462 } else if (get_ev_events (pd, x) & EVENTIO_ERROR) {
@@ -461,8 +466,13 @@ NetHandler::mainNetEvent(int event, Event *e)
461466 }
462467 }
463468 vc = epd->data .vc ;
464- if (get_ev_events (pd, x) & ( EVENTIO_WRITE | EVENTIO_ERROR) ) {
469+ if (get_ev_events (pd, x) & EVENTIO_WRITE) {
465470 vc->write .triggered = 1 ;
471+ if (get_ev_events (pd, x) & EVENTIO_ERROR) {
472+ vc->write .error = 1 ;
473+ } else {
474+ vc->write .error = 0 ;
475+ }
466476 if (!write_ready_list.in (vc)) {
467477 write_ready_list.enqueue (vc);
468478 } else if (get_ev_events (pd, x) & EVENTIO_ERROR) {
@@ -495,7 +505,7 @@ NetHandler::mainNetEvent(int event, Event *e)
495505 set_cont_flags (vc->control_flags );
496506 if (vc->closed )
497507 close_UnixNetVConnection (vc, trigger_event->ethread );
498- else if (vc->read .enabled && vc->read .triggered )
508+ else if (( vc->read .enabled || vc-> read . error ) && vc->read .triggered )
499509 vc->net_read_io (this , trigger_event->ethread );
500510 else if (!vc->read .enabled ) {
501511 read_ready_list.remove (vc);
@@ -512,7 +522,7 @@ NetHandler::mainNetEvent(int event, Event *e)
512522 set_cont_flags (vc->control_flags );
513523 if (vc->closed )
514524 close_UnixNetVConnection (vc, trigger_event->ethread );
515- else if (vc->write .enabled && vc->write .triggered )
525+ else if (( vc->write .enabled || vc-> write . error ) && vc->write .triggered )
516526 write_to_net (this , vc, trigger_event->ethread );
517527 else if (!vc->write .enabled ) {
518528 write_ready_list.remove (vc);
@@ -530,7 +540,7 @@ NetHandler::mainNetEvent(int event, Event *e)
530540 diags->set_override (vc->control .debug_override );
531541 if (vc->closed )
532542 close_UnixNetVConnection (vc, trigger_event->ethread );
533- else if (vc->read .enabled && vc->read .triggered )
543+ else if (( vc->read .enabled || vc-> read . error ) && vc->read .triggered )
534544 vc->net_read_io (this , trigger_event->ethread );
535545 else if (!vc->read .enabled )
536546 vc->ep .modify (-EVENTIO_READ);
@@ -539,7 +549,7 @@ NetHandler::mainNetEvent(int event, Event *e)
539549 diags->set_override (vc->control .debug_override );
540550 if (vc->closed )
541551 close_UnixNetVConnection (vc, trigger_event->ethread );
542- else if (vc->write .enabled && vc->write .triggered )
552+ else if (( vc->write .enabled || vc-> write . error ) && vc->write .triggered )
543553 write_to_net (this , vc, trigger_event->ethread );
544554 else if (!vc->write .enabled )
545555 vc->ep .modify (-EVENTIO_WRITE);
0 commit comments