int ReliSock::perform_authenticate(bool with_key, KeyInfo *& key, const char* methods, CondorError* errstack, int auth_timeout, char **method_used) { int in_encode_mode; int result; if( method_used ) { *method_used = NULL; } if (!triedAuthentication()) { Authentication authob(this); setTriedAuthentication(true); // store if we are in encode or decode mode in_encode_mode = is_encode(); // actually perform the authentication if ( with_key ) { result = authob.authenticate( hostAddr, key, methods, errstack, auth_timeout ); } else { result = authob.authenticate( hostAddr, methods, errstack, auth_timeout ); } // restore stream mode (either encode or decode) if ( in_encode_mode && is_decode() ) { encode(); } else { if ( !in_encode_mode && is_encode() ) { decode(); } } setFullyQualifiedUser(authob.getFullyQualifiedUser()); if( authob.getMethodUsed() ) { setAuthenticationMethodUsed(authob.getMethodUsed()); if( method_used ) { *method_used = strdup(authob.getMethodUsed()); } } return result; } else { return 1; } }
int Stream::code(StartdRec &rec) { if( !code(rec.version_num) ) return FALSE; if( rec.version_num >=0 ) { /* we are talking with a startd of an old version which sends just two port numbers */ rec.ports.port1 = rec.version_num; if ( !code(rec.ports.port2) ) return FALSE; return TRUE; } if( !code(rec.ports) ) return FALSE; if( !code(rec.ip_addr) ) return FALSE; if( is_encode() ) { if( !code(rec.server_name) ) return FALSE; } else if ( is_decode() ) { if( !code(rec.server_name) ) return FALSE; } return TRUE; }