36 TSecContext *TRootAuth::Authenticate(TSocket *s, 
const char *host,
 
   37                                      const char *user, Option_t *opts)
 
   42    Int_t rproto =  s->GetRemoteProtocol() % 1000;
 
   43    if (s->GetServType() == (Int_t)TSocket::kROOTD) {
 
   44       if (rproto > 6 && rproto < 10) {
 
   46          s->Send(Form(
"%d", TSocket::GetClientProtocol()), kROOTD_PROTOCOL2);
 
   48          if (s->Recv(rproto, kind) < 0) {
 
   49             Error(
"Authenticate", 
"receiving remote protocol");
 
   52          s->SetRemoteProtocol(rproto);
 
   56    Bool_t isPROOF = (s->GetServType() == (Int_t)TSocket::kPROOFD);
 
   57    Bool_t isPROOFserv = (opts[0] == 
'P') ? kTRUE : kFALSE;
 
   60    TString proto = TUrl(s->GetUrl()).GetProtocol();
 
   63    } 
else if (proto.Contains(
"sockd") || proto.Contains(
"rootd") ||
 
   64               proto.Contains(
"proofd")) {
 
   65       proto.ReplaceAll(
"d",1,
"",0);
 
   67    proto += Form(
":%d",rproto);
 
   71       new TAuthenticate(s, host, proto, user);
 
   74    if (!auth->Authenticate()) {
 
   76       if (auth->HasTimedOut() > 0)
 
   78                "timeout expired for %s@%s", auth->GetUser(), host);
 
   81                "authentication failed for %s@%s", auth->GetUser(), host);
 
   84          s->Send(Form(
"%d %s", gSystem->GetPid(), host), kROOTD_CLEANUP);
 
   89       ctx = auth->GetSecContext();
 
   90       s->SetSecContext(ctx);
 
   97    if (rc && isPROOF && rproto > 11) {
 
   98       Bool_t client = !isPROOFserv;
 
   99       if (TAuthenticate::ProofAuthSetup(s, client) !=0 ) {
 
  100          Error(
"Authenticate", 
"PROOF: failed to finalize setup");
 
  111 Int_t TRootAuth::ClientVersion()
 
  113    return TSocket::GetClientProtocol();
 
  119 void TRootAuth::ErrorMsg(
const char *where, Int_t ecode)
 
  121    TAuthenticate::AuthError(where, ecode);