Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

desQuick.c

Blame
  • Forked from Nettle / nettle
    Source project has a limited visibility.
    • Niels Möller's avatar
      3f7c7bf2
      *** empty log message *** · 3f7c7bf2
      Niels Möller authored
      Rev: src/symmetric/arcfour.c:1.2
      Rev: src/symmetric/bf_test.c:1.2
      Rev: src/symmetric/desQuick.c:1.3
      Rev: src/symmetric/desdata.c:1.3
      Rev: src/symmetric/desinfo.h:1.2
      3f7c7bf2
      History
      *** empty log message ***
      Niels Möller authored
      Rev: src/symmetric/arcfour.c:1.2
      Rev: src/symmetric/bf_test.c:1.2
      Rev: src/symmetric/desQuick.c:1.3
      Rev: src/symmetric/desdata.c:1.3
      Rev: src/symmetric/desinfo.h:1.2
    Ident.pmod 3.66 KiB
    //! An implementation of the IDENT protocol, specified in RFC 931.
    
    #pike __REAL_VERSION__
    
    // #define IDENT_DEBUG
    
    constant lookup_async = AsyncLookup;
    
    //!
    class AsyncLookup
    {
      Stdio.File con;
    
      function(array(string), mixed ...:void) callback;
      array cb_args;
    
      string query;
      string read_buf = "";
    
      protected void do_callback(array(string) reply)
      {
    #ifdef IDENT_DEBUG
        werror("Protocols.Ident: calling callback\n");
    #endif /* IDENT_DEBUG */
    
        mixed err;
        if (callback) {
          err = catch {
    	callback(reply, @cb_args);
          };
          callback = 0;
          cb_args = 0;
        }
        if (con) {
          con->close();
          destruct(con);
        }
        query = "";
        read_buf = "";
        con = 0;
        if (err) {
          throw(err);
        }
      }
    
      protected void write_cb()
      {
    #ifdef IDENT_DEBUG
        werror("Protocols.Ident: sending query\n");
    #endif /* IDENT_DEBUG */
    
        int i = con->write(query);
        if (i >= 0) {
          query = query[i..];
          if (sizeof(query)) {
    	return;
          }
          con->set_write_callback(0);
        } else {
          do_callback(({ "ERROR", "FAILED TO SEND REQUEST" }));
        }
      }
    
      protected void read_cb(mixed ignored, string data)
      {
    #ifdef IDENT_DEBUG
        werror("Protocols.Ident: reading data\n");
    #endif /* IDENT_DEBUG */
    
        read_buf += data;