boolean waitForConnections(String forWhom,
			int requiredMinNumberOfConnections) {
		if (this.connections.size() >= requiredMinNumberOfConnections) {
			log.info("waitForConnections: called for " + forWhom
					+ ": had right# of connections on entry, for call ID "
					+ this.callID);

			return true;
		}

		if (this.state == 34) {
			log.info("waitForConnections: called for " + forWhom
					+ ": call was INVALID on entry, for call ID " + this.callID);

			return false;
		}

		boolean gotRequiredNumberOfConnections = false;

		long startTime = System.currentTimeMillis();
		long currentTime = startTime;

		long endTime = currentTime + Tsapi.getCallCompletionTimeout();

		boolean delayEnabled = Tsapi.isEnableDelayInTermConnDropOnCstaFailed();

		while (!gotRequiredNumberOfConnections) {
			try {
				if (delayEnabled) {
					setWaitingForConnections(true);
				}

				this.connections.wait(endTime - currentTime);
			} catch (InterruptedException e) {
			}
			currentTime = System.currentTimeMillis();

			if (this.connections.size() >= requiredMinNumberOfConnections) {
				log.info("waitForConnections: waiting for " + forWhom
						+ ": succeeded after waiting a total of "
						+ (currentTime - startTime) / 1000L
						+ " seconds, to get " + requiredMinNumberOfConnections
						+ " connections for call ID " + this.callID);

				gotRequiredNumberOfConnections = true;
				break;
			}

			if (currentTime >= endTime) {
				log.info("waitForConnections: waited for " + forWhom
						+ ": Failed.  After waiting a total of "
						+ (currentTime - startTime) / 1000L
						+ " seconds, did not get "
						+ requiredMinNumberOfConnections
						+ " connections for call ID " + this.callID);

				break;
			}

			if (this.state == 34) {
				log.info("waitForConnections: waited for " + forWhom
						+ ": Failed.  After waiting a total of "
						+ (currentTime - startTime) / 1000L
						+ " seconds, the call went INVALID (ended) - call ID "
						+ this.callID);

				break;
			}

			log.info("waitForConnections: waiting for " + forWhom
					+ ": woke up after waiting a total of "
					+ (currentTime - startTime) / 1000L
					+ " seconds, and failed to see "
					+ requiredMinNumberOfConnections
					+ " connections for call ID " + this.callID
					+ " - #connections=" + this.connections.size()
					+ " - waiting again");
		}

		if (delayEnabled) {
			notifyTheWaitingThread();
		}
		return gotRequiredNumberOfConnections;
	}