- ident = strchr( result, 0 );
- ident++;
-
- /* Do we have a result of the IDENT lookup? If so, set it as the user name */
- if( *ident )
- {
- Log( LOG_INFO, "IDENT lookup for connection %ld: \"%s\".", i, ident );
- Client_SetUser( c, ident, TRUE );
+ /* clean up buffer for IDENT result */
+ len = strlen( s->buffer ) + 1;
+ memmove( s->buffer, s->buffer + len, sizeof( s->buffer ) - len );
+ s->bufpos -= len;
+
+ /* Don't close pipe and clean up, but
+ * instead wait for IDENT result */
+ s->stage = 1;
+ goto try_resolve;
+ }
+ else if( s->stage == 1 )
+ {
+ /* IDENT user name */
+ if( s->buffer[0] )
+ {
+ Log( LOG_INFO, "IDENT lookup for connection %ld: \"%s\".", i, s->buffer );
+ Client_SetUser( c, s->buffer, TRUE );
+ }
+ else Log( LOG_INFO, "IDENT lookup for connection %ld: no result.", i );
+#endif
+ }
+ else Log( LOG_ERR, "Resolver: got result for unknown stage %d!?", s->stage );