Ticket Change Details
Overview

Artifact ID: 5eac592725b07e08d3477c84aed0b3f373199301af3ea3a5fbf5a1214c09856c
Ticket: 94c6a431fee47acdb590ee3963704ef1d756a5cf
Buffering until timeout
User & Date: anonymous on 2018-10-22 21:01:25
Changes

  1. icomment:
    Hi,
    
    We have the same problem and I was able to pinpoint it after learning tcl channel frame.
    
    1. In "tlsWatchProc" of tlsIO.c, the condition to create timer is not covering all cases.  It should also check the BIO buffer.
    The line should read:
    if ((mask & TCL_READABLE) &&
        (Tcl_InputBuffered(statePtr->self) > 0 || BIO_ctrl_pending(statePtr->bio) > 0)) {
    ...............
    }
    
    2.  In "BioCtrl" of tlsBIO.c, the result of BIO_CTRL_PENDING should be:
    ret = ((chan) ? Tcl_InputBuffered(chan) : 0);
    NOT ret = ((chan) ? 1: 0);
    
    Second error caused BIO_ctrl_pending always return 1 even no data available.
    
    Please let me know after you push our the patch.
    
    Best,
    
    Jinhu
    jinhu@stanford.edu
    
  2. login: "anonymous"
  3. mimetype: "text/plain"
  4. status changed to: "Verified"
  5. type changed to: "Code Defect"
  6. username: "jinhu@stanford.edu"