add: if (net < 0) return B_NO_INIT;
context: status_t IMAP4Client::Select(const char *mb, bool reselect, bool queue_new_messages, bool noop, bool no_command, bool ignore_forced_reselect) {	if (force_reselect && !ignore_forced_reselect) {		reselect = true;		force_reselect = false;	}		if (reselect)		Close();		struct mailbox_info *info = (struct mailbox_info *)(box_info.ItemAt(mailboxes.IndexOf(mb)));	if (info == NULL)		return B_NAME_NOT_FOUND;	const char *real_mb = info->server_mb_name.String();		if ((selected_mb != real_mb) || (noop) || (no_command)) {		if ((selected_mb != "")  && (selected_mb != real_mb)){			BString trash;			if (SendCommand("CLOSE") < B_OK)				return B_ERROR;			selected_mb = "";			WasCommandOkay(trash);		}		BString cmd;		if (selected_mb == real_mb)			cmd = "NOOP";		else			cmd << "SELECT \"" << real_mb << '\"';					if (!no_command)			if (SendCommand(cmd.String()) < B_OK)				return B_ERROR;				char expected[255];		BString tag;		::sprintf(expected,"a%.7ld",commandCount);				int32 new_exists(-1), new_next_uid(-1), recent(-1);				while(1) {			NestedString response;			if (GetResponse(tag,&response) < B_OK)				return B_ERROR;						if (tag == expected)				break;						if ((response.CountItems() > 1) && (strcasecmp(response[1](),"EXISTS") == 0))				new_exists = atoi(response[0]());						if (response[0].CountItems() == 2 && strcasecmp(response[0][0](),"UIDNEXT") == 0)				new_next_uid = atol(response[0][1]());							if ((response.CountItems() > 1) && (strcasecmp(response[1](),"RECENT") == 0))				recent = atoi(response[0]());		}				if ((queue_new_messages) && (recent > 0)) {			BString command = "FETCH ";			command << new_exists - recent + 1 << ':' << new_exists << " UID";			SendCommand(command.String());			::sprintf(expected,"a%.7ld",commandCount);			BStringList list;			BString uid;			while(1) {				NestedString response;				if (GetResponse(tag,&response) < 0)					return B_ERROR;											if (tag == expected)					break;								if (strcmp(response[2][0](),"UID") != 0)					continue; //--- Courier IMAP blows. Hard.								uid = mb;				uid << '/' << response[2][1]();				if (!unique_ids->HasItem(uid.String()))					list.AddItem(uid.String());			}						if (list.CountItems() > 0) {				(*unique_ids) += list;				runner->GetMessages(&list,-1);			}		}				info->exists = new_exists;		info->next_uid = new_next_uid;				selected_mb = real_mb;	}			return B_OK;}