You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2010/05/07 20:56:34 UTC

svn commit: r942179 - in /trafficserver/traffic/trunk: iocore/cluster/ iocore/net/ proxy/http2/

Author: jplevyak
Date: Fri May  7 18:56:33 2010
New Revision: 942179

URL: http://svn.apache.org/viewvc?rev=942179&view=rev
Log:
TS-273: SSL not working, fixed problem with virtual function not being found
and assorted cruft.

Modified:
    trafficserver/traffic/trunk/iocore/cluster/ClusterHandlerBase.cc
    trafficserver/traffic/trunk/iocore/net/I_NetVConnection.h
    trafficserver/traffic/trunk/iocore/net/NetVConnection.cc
    trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h
    trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h
    trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc
    trafficserver/traffic/trunk/proxy/http2/HttpClientSession.cc
    trafficserver/traffic/trunk/proxy/http2/HttpSessionManager.cc

Modified: trafficserver/traffic/trunk/iocore/cluster/ClusterHandlerBase.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/cluster/ClusterHandlerBase.cc?rev=942179&r1=942178&r2=942179&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/cluster/ClusterHandlerBase.cc (original)
+++ trafficserver/traffic/trunk/iocore/cluster/ClusterHandlerBase.cc Fri May  7 18:56:33 2010
@@ -365,7 +365,6 @@ ClusterState::build_do_io_vector()
 #define REENABLE_IO() \
   if (!ch->on_stolen_thread && !io_complete) { \
     v->reenable_re(); \
-    ch->net_vc->boost(); \
   }
 
 #else // !CLUSTER_TOMCAT

Modified: trafficserver/traffic/trunk/iocore/net/I_NetVConnection.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/I_NetVConnection.h?rev=942179&r1=942178&r2=942179&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/I_NetVConnection.h (original)
+++ trafficserver/traffic/trunk/iocore/net/I_NetVConnection.h Fri May  7 18:56:33 2010
@@ -49,12 +49,6 @@ enum NetDataType
   NET_DATA_ATTRIBUTES = VCONNECTION_NET_DATA_BASE
 };
 
-/* can this be moved to NT files */
-enum
-{ IOCORE_NETVC_MAGIC_ALIVE = 0x0000BEEF,
-  IOCORE_NETVC_MAGIC_DEAD = 0xDEADBEEF
-};
-
 /**
   Holds user options for NetVConnection. This class holds various
   options a user can specify for NetVConnection. Right now this
@@ -94,10 +88,7 @@ enum
   rest get sensible default values.
 
 */
-class NetVCOptions
-{
-
-public:
+struct NetVCOptions {
   int local_port;
 
   inku32 spoof_ip;
@@ -116,11 +107,9 @@ public:
   void set_sock_param(int _recv_bufsize, int _send_bufsize, unsigned long _opt_flags);
 
 
-    NetVCOptions()
-  {
+  NetVCOptions() {
     reset();
   }
-
   /* Add more options here instead of adding them to connect_re() args etc */
 };
 
@@ -345,13 +334,6 @@ public:
   /** @return current inactivity_timeout value in nanosecs */
   virtual ink_hrtime get_inactivity_timeout() = 0;
 
-  /**
-    Boosts the priority of the VConnection. Used by SM to indicate
-    that the connection is likely to be actively used soon.
-
-  */
-  virtual void boost();
-
   /** Returns local sockaddr in. */
   const struct sockaddr_in &get_local_addr();
 
@@ -391,7 +373,7 @@ public:
   virtual void reenable_re(VIO * vio) = 0;
 
   /// PRIVATE
-    virtual ~ NetVConnection();
+  virtual ~NetVConnection() {}
 
   /**
     PRIVATE: instances of NetVConnection cannot be created directly
@@ -400,16 +382,9 @@ public:
     just to avoid compile errors.
 
   */
-    NetVConnection();
-
-  /// PRIVATE: SSL specific stuff 
-  virtual bool is_over_ssl() = 0;
+  NetVConnection();
 
-  /// NOT IMPLEMENTED
-  virtual SOCKET get_socket();
-
-  /// NOT IMPLEMENTED
-  virtual int get_last_error();
+  virtual SOCKET get_socket() = 0;
 
   /** Set local sock addr struct. */
   virtual void set_local_addr() = 0;
@@ -417,6 +392,7 @@ public:
   /** Set remote sock addr struct. */
   virtual void set_remote_addr() = 0;
 
+  // for InkAPI
   bool get_is_internal_request() const {
     return is_internal_request;
   }
@@ -493,22 +469,18 @@ protected:
 
 inline
 NetVConnection::NetVConnection():
-VConnection(NULL),
-attributes(0),
-thread(NULL),
+  VConnection(NULL),
+  attributes(0),
+  thread(NULL),
 #if WITH_DETAILED_VCONNECTION_LOGGING
-logging(NULL),
+  logging(NULL),
 #endif
-got_local_addr(0),
-got_remote_addr(0),
-is_internal_request(false)
+  got_local_addr(0),
+  got_remote_addr(0),
+  is_internal_request(false)
 {
   memset(&local_addr, 0, sizeof(local_addr));
   memset(&remote_addr, 0, sizeof(remote_addr));
 }
 
-#if defined (_IOCORE_WIN32_WINNT)
-#include "NTNetVConnection.h"
-#endif
-
 #endif

Modified: trafficserver/traffic/trunk/iocore/net/NetVConnection.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/NetVConnection.cc?rev=942179&r1=942178&r2=942179&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/NetVConnection.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/NetVConnection.cc Fri May  7 18:56:33 2010
@@ -44,25 +44,3 @@ NetVConnection::cancel_OOB()
   return;
 }
 
-int
-NetVConnection::get_last_error()
-{
-  return 0;
-}
-
-
-void
-NetVConnection::boost()
-{
-}
-
-NetVConnection::~NetVConnection()
-{
-}
-
-SOCKET
-NetVConnection::get_socket()
-{
-  ink_release_assert(!"Not Implemented");
-  return (SOCKET) 0;
-}

Modified: trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h?rev=942179&r1=942178&r2=942179&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h (original)
+++ trafficserver/traffic/trunk/iocore/net/P_SSLNetVConnection.h Fri May  7 18:56:33 2010
@@ -79,10 +79,7 @@ public:
   int write_want_syscal;
   int write_want_x509;
   int write_error_zero;
-  virtual bool is_over_ssl()
-  {
-    return (true);
-  }
+
   virtual int sslStartHandShake(int event, int &err);
   virtual void free(EThread * t);
   virtual void enableRead()
@@ -90,14 +87,9 @@ public:
     read.enabled = 1;
     write.enabled = 1;
   };
-//  virtual int  loadBufferAndCallRead (int toread, int &rattempted,
-//                                                                        int &total_read, MIOBufferAccessor &buf);
-
-  virtual int loadBufferAndCallWrite(int towrite, int &wattempted, int &total_wrote, MIOBufferAccessor & buf);
-
   virtual bool getSSLHandShakeComplete()
   {
-    return (sslHandShakeComplete);
+    return sslHandShakeComplete;
   };
   void setSSLHandShakeComplete(bool state)
   {
@@ -105,7 +97,7 @@ public:
   };
   virtual bool getSSLClientConnection()
   {
-    return (sslClientConnection);
+    return sslClientConnection;
   };
   virtual void setSSLClientConnection(bool state)
   {
@@ -113,14 +105,9 @@ public:
   };
   int sslServerHandShakeEvent(int &err);
   int sslClientHandShakeEvent(int &err);
-//  virtual void readInternalSSLBuffers (int &r, int toread, int &rattempted,
-//                                                                         int &total_read, MIOBufferAccessor &buf, 
-//                                                                         NetHandler * nh);
-
   virtual void net_read_io(NetHandler * nh, EThread * lthread);
-
-  virtual ~ SSLNetVConnection() {
-  };
+  virtual ink64 load_buffer_and_write(ink64 towrite, ink64 &wattempted, ink64 &total_wrote, MIOBufferAccessor & buf);
+  virtual ~ SSLNetVConnection() { }
   ////////////////////////////////////////////////////////////
   // instances of NetVConnection should be allocated        //
   // only from the free list using NetVConnection::alloc(). //

Modified: trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h?rev=942179&r1=942178&r2=942179&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h (original)
+++ trafficserver/traffic/trunk/iocore/net/P_UnixNetVConnection.h Fri May  7 18:56:33 2010
@@ -92,7 +92,6 @@ public:
   virtual Action *send_OOB(Continuation *cont, char *buf, int len);
   virtual void cancel_OOB();
 
-  virtual bool is_over_ssl() { return (false); }
   virtual void setSSLHandshakeWantsRead(bool flag) { return; }
   virtual bool getSSLHandshakeWantsRead() { return false; }
   virtual void setSSLHandshakeWantsWrite(bool flag) { return; }
@@ -123,10 +122,7 @@ public:
   virtual void reenable(VIO *vio);
   virtual void reenable_re(VIO *vio);
 
-  virtual SOCKET get_socket()
-  {
-    return con.fd;
-  }
+  virtual SOCKET get_socket();
 
   virtual ~ UnixNetVConnection();
 
@@ -342,11 +338,11 @@ UnixNetVConnection::cancel_active_timeou
   }
 }
 
-TS_INLINE
-UnixNetVConnection::~
-UnixNetVConnection()
-{
-  return;
+TS_INLINE UnixNetVConnection::~UnixNetVConnection() { }
+
+TS_INLINE SOCKET
+UnixNetVConnection::get_socket() {
+  return con.fd;
 }
 
 // declarations for local use (within the net module)

Modified: trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc?rev=942179&r1=942178&r2=942179&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc (original)
+++ trafficserver/traffic/trunk/iocore/net/SSLNetVConnection.cc Fri May  7 18:56:33 2010
@@ -77,8 +77,7 @@ ssl_read_from_net(NetHandler * nh, UnixN
     Debug("ssl", "[SSL_NetVConnection::ssl_read_from_net] b->write_avail()=%d", block_write_avail);
 
     int offset = 0;
-// while can be replaced with if - need to test what works faster with openssl
-//        if( block_write_avail > 0 ) 
+    // while can be replaced with if - need to test what works faster with openssl
     while (block_write_avail > 0) {
       sslvc->read_calls++;
       int rres = SSL_read(sslvc->ssl, b->end() + offset, block_write_avail);
@@ -122,11 +121,14 @@ ssl_read_from_net(NetHandler * nh, UnixN
         Debug("ssl", "[SSL_NetVConnection::ssl_read_from_net] SSL_ERROR_ZERO_RETURN");
         break;
       case SSL_ERROR_SSL:
-      default:
+      default: {
+        char err_string[4096];
+        ERR_error_string(ERR_get_error(), err_string);
         event = SSL_READ_ERROR;
         ret = errno;
-        Error("[SSL_NetVConnection::ssl_read_from_net] SSL_ERROR_SSL");
+        Error("[SSL_NetVConnection::ssl_read_from_net] SSL_ERROR_SSL %s", err_string);
         break;
+      }
       }                         // switch
       break;
     }                           // while( block_write_avail > 0 )
@@ -150,7 +152,6 @@ ssl_read_from_net(NetHandler * nh, UnixN
 #if defined (_DEBUG)
     if (readAvail == 0) {
       Debug("ssl", "[SSL_NetVConnection::ssl_read_from_net] readAvail == 0");
-//            event = VC_EVENT_EOS;
     }
 #endif
   }
@@ -281,17 +282,13 @@ SSLNetVConnection::net_read_io(NetHandle
 }
 
 
-int
-SSLNetVConnection::loadBufferAndCallWrite(int towrite, int &wattempted, int &total_wrote, MIOBufferAccessor & buf)
-{
+ink64 SSLNetVConnection::load_buffer_and_write(ink64 towrite, ink64 &wattempted, ink64 &total_wrote, MIOBufferAccessor & buf) {
   ProxyMutex *mutex = this_ethread()->mutex;
   int r = 0;
-  int l = 0;
+  ink64 l = 0;
   int offset = buf.entry->start_offset;
   IOBufferBlock *b = buf.entry->block;
 
-
-
   do {
     // check if we have done this block
     l = b->read_avail();
@@ -302,13 +299,11 @@ SSLNetVConnection::loadBufferAndCallWrit
       continue;
     }
     // check if to amount to write exceeds that in this buffer
-    int wavail = towrite - total_wrote;
-    if (l > wavail) {
+    ink64 wavail = towrite - total_wrote;
+    if (l > wavail)
       l = wavail;
-    }
-    if (!l) {
+    if (!l)
       break;
-    }
     wattempted = l;
     total_wrote += l;
     Debug("ssl", "SSLNetVConnection::loadBufferAndCallWrite, before do_SSL_write, l = %d, towrite = %d, b = %x", l,
@@ -357,7 +352,6 @@ SSLNetVConnection::loadBufferAndCallWrit
     default:
       r = -errno;
       Debug("ssl", "SSL_write-SSL_ERROR_SSL");
-      //SSLNetProcessor::logSSLError("SSL_write", 0);
       SSLNetProcessor::logSSLError("SSL_write");
       break;
     }
@@ -366,35 +360,34 @@ SSLNetVConnection::loadBufferAndCallWrit
 }
 
 SSLNetVConnection::SSLNetVConnection():
-connect_calls(0),
-connect_want_write(0),
-connect_want_read(0),
-connect_want_connect(0),
-connect_want_ssl(0),
-connect_want_syscal(0),
-connect_want_accept(0),
-connect_want_x509(0),
-connect_error_zero(0),
-accept_calls(0),
-read_calls(0),
-read_want_write(0),
-read_want_read(0),
-read_want_ssl(0),
-read_want_syscal(0),
-read_want_x509(0),
-read_error_zero(0),
-write_calls(0),
-write_want_write(0),
-write_want_read(0),
-write_want_ssl(0),
-write_want_syscal(0), write_want_x509(0), write_error_zero(0), sslHandShakeComplete(false), sslClientConnection(false)
+  connect_calls(0),
+  connect_want_write(0),
+  connect_want_read(0),
+  connect_want_connect(0),
+  connect_want_ssl(0),
+  connect_want_syscal(0),
+  connect_want_accept(0),
+  connect_want_x509(0),
+  connect_error_zero(0),
+  accept_calls(0),
+  read_calls(0),
+  read_want_write(0),
+  read_want_read(0),
+  read_want_ssl(0),
+  read_want_syscal(0),
+  read_want_x509(0),
+  read_error_zero(0),
+  write_calls(0),
+  write_want_write(0),
+  write_want_read(0),
+  write_want_ssl(0),
+  write_want_syscal(0), write_want_x509(0), write_error_zero(0), sslHandShakeComplete(false), sslClientConnection(false)
 {
   ssl = NULL;
 }
 
 void
-SSLNetVConnection::free(EThread * t)
-{
+SSLNetVConnection::free(EThread * t) {
   ProxyMutex *mutex = t->mutex;
   NET_DECREMENT_DYN_STAT(net_connections_currently_open_stat);
   got_remote_addr = 0;
@@ -407,8 +400,6 @@ SSLNetVConnection::free(EThread * t)
   SET_CONTINUATION_HANDLER(this, (SSLNetVConnHandler) & SSLNetVConnection::startEvent);
   ink_assert(con.fd == NO_FD);
   nh = NULL;
-  //printf("total %d read calls for this connection fd: %d\n", read_calls, con.fd); 
-  //printf("total %d write calls for this connection fd:  %d\n", write_calls, con.fd); 
   read_calls = 0;
   write_calls = 0;
   connect_calls = 0;
@@ -511,7 +502,6 @@ SSLNetVConnection::sslServerHandShakeEve
 */
       X509_free(client_cert);
     }
-    //printf("ssl accept successful after %d calls for fd %d\n", accept_calls,con.fd);
     sslHandShakeComplete = 1;
 
     return EVENT_DONE;
@@ -546,7 +536,6 @@ SSLNetVConnection::sslServerHandShakeEve
   default:
     err = errno;
     Debug("ssl", "SSLNetVConnection::sslServerHandShakeEvent, error");
-    //SSLNetProcessor::logSSLError("SSL_ServerHandShake", 0);
     SSLNetProcessor::logSSLError("SSL_ServerHandShake");
     return EVENT_ERROR;
     break;
@@ -579,8 +568,6 @@ SSLNetVConnection::sslClientHandShakeEve
 */
 
     X509_free(server_cert);
-//          printf("ssl connect successful after %d calls for fd: %d\n",connect_calls, con.fd);
-    //         printf("connect errors connect_want_write %d , connect_want_read %d ,connect_want_x509 %d,connect_want_accept %d,connect_want_connect %d,connect_error_zero %d,connect_want_syscal %d,connect_want_ssl %d\n",connect_want_write,connect_want_read,connect_want_x509,connect_want_accept,connect_want_connect,connect_error_zero,connect_want_syscal,connect_want_ssl);
     sslHandShakeComplete = 1;
 
     return EVENT_DONE;
@@ -623,7 +610,6 @@ SSLNetVConnection::sslClientHandShakeEve
   default:
     connect_want_ssl++;
     err = errno;
-    //SSLNetProcessor::logSSLError("sslClientHandShakeEvent", 0);
     SSLNetProcessor::logSSLError("sslClientHandShakeEvent");
     return EVENT_ERROR;
     break;

Modified: trafficserver/traffic/trunk/proxy/http2/HttpClientSession.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/HttpClientSession.cc?rev=942179&r1=942178&r2=942179&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/HttpClientSession.cc (original)
+++ trafficserver/traffic/trunk/proxy/http2/HttpClientSession.cc Fri May  7 18:56:33 2010
@@ -585,8 +585,6 @@ HttpClientSession::release(IOBufferReade
   HTTP_DECREMENT_DYN_STAT(http_current_client_transactions_stat);
   client_trans_stat--;
 
-  client_vc->boost();
-
   // Check to see there is remaining data in the
   //  buffer.  If there is, spin up a new state
   //  machine to process it.  Otherwise, issue an

Modified: trafficserver/traffic/trunk/proxy/http2/HttpSessionManager.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/HttpSessionManager.cc?rev=942179&r1=942178&r2=942179&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/HttpSessionManager.cc (original)
+++ trafficserver/traffic/trunk/proxy/http2/HttpSessionManager.cc Fri May  7 18:56:33 2010
@@ -200,7 +200,6 @@ HttpSessionManager::acquire_session(Cont
         Debug("http_ss", "[%lld] [acquire session] returning attached session ", to_return->con_id);
         to_return->state = HSS_ACTIVE;
         sm->attach_server_session(to_return);
-        to_return->get_netvc()->boost();
         return HSM_DONE;
       }
     }
@@ -255,7 +254,6 @@ HttpSessionManager::acquire_session(Cont
           to_return = b;
           Debug("http_ss", "[%lld] [acquire session] " "return session from shared pool", to_return->con_id);
           sm->attach_server_session(to_return);
-          to_return->get_netvc()->boost();
           return HSM_DONE;
         }
       }