1. 28 11月, 2000 1 次提交
  2. 27 11月, 2000 7 次提交
  3. 26 11月, 2000 2 次提交
  4. 23 11月, 2000 3 次提交
  5. 22 11月, 2000 4 次提交
  6. 21 11月, 2000 1 次提交
  7. 20 11月, 2000 1 次提交
  8. 19 11月, 2000 7 次提交
  9. 17 11月, 2000 12 次提交
  10. 16 11月, 2000 2 次提交
    • G
      I have no idea how this comment got there, but it's certainly not · 8bfc8f93
      Geoff Thorpe 提交于
      applicable to ENGINE_ctrl()
      8bfc8f93
    • G
      Many applications that use OpenSSL with ENGINE support might face a · ef02b10a
      Geoff Thorpe 提交于
      situation where they've initialised the ENGINE, loaded keys (which are then
      linked to that ENGINE), and performed other checks (such as verifying
      certificate chains etc). At that point, if the application goes
      multi-threaded or multi-process it creates problems for any ENGINE
      implementations that are either not thread/process safe or that perform
      optimally when they do not have to perform locking and other contention
      management tasks at "run-time".
      
      This defines a new ENGINE_ctrl() command that can be supported by engines
      at their discretion. If ENGINE_ctrl(..., ENGINE_CTRL_HUP,...) returns an
      error then the caller should check if the *_R_COMMAND_NOT_IMPLEMENTED error
      reason was set - it may just be that the engine doesn't support or need the
      HUP command, or it could be that the attempted reinitialisation failed. A
      crude alternative is to ignore the return value from ENGINE_ctrl() (and
      clear any errors with ERR_clear_error()) and perform a test operation
      immediately after the "HUP". Very crude indeed.
      
      ENGINEs can support this command to close and reopen connections, files,
      handles, or whatever as an alternative to run-time locking when such things
      would otherwise be needed. In such a case, it's advisable for the engine
      implementations to support locking by default but disable it after the
      arrival of a HUP command, or any other indication by the application that
      locking is not required. NB: This command exists to allow an ENGINE to
      reinitialise without the ENGINE's functional reference count having to sink
      down to zero and back up - which is what is normally required for the
      finish() and init() handlers to get invoked. It would also be a bad idea
      for engine_lib to catch this command itself and interpret it by calling the
      engine's init() and finish() handlers directly, because reinitialisation
      may need special handling on a case-by-case basis that is distinct from a
      finish/init pair - eg. calling a finish() handler may invalidate the state
      stored inside individual keys that have already loaded for this engine.
      ef02b10a