Branch: Tag:

2016-02-17

2016-02-17 18:57:19 by Stephen R. van den Berg <srb@cuci.nl>

pgsql: Expedite filedescriptor close when leaving scope.

335:    catch(connectfail());    }    -  final void sendterminate() { -  Thread.MutexKey lock=i->fillreadmux->lock(); -  if(i->fillread) // Delayed close() after flushing the output buffer -  i->fillread.signal(), i->fillread=0; -  lock=0; -  } -  +     final int close() {    int ret; -  +  { Thread.MutexKey lock=i->fillreadmux->lock(); +  if(i->fillread) { // Delayed close() after flushing the output buffer +  i->fillread.signal(); +  i->fillread=0; +  lock=0; +  PD("%d>Close socket read, flush write\n",socket->query_fd()); +  ret=socket->close("r"); +  i->read_cb(socket->query_id(),0); +  return ret; +  } +  lock=0; +  }    destruct(nostash);    PD("%d>Close socket\n",socket->query_fd());    ret=socket->close(); -  sendterminate(); +     foreach(closecallbacks;function(void|mixed:void) closecb;)    closecb();    closecallbacks=(<>);