Character Controller jumps higher when colliding with wall - 3D

So, I have a simple character controller that moves the player, apply gravity and rotate the player as rotate the camera. The Black Line represents the normal behavior. The Yellow Line represents my problem. And the Green Line is my desired behavior.

Besides the Yellow Line problem, I have another problem that the player is sticking to the wall while the player is the air and moving towards the wall. I already tried to put a Physics material with no friction, but it didn`t work.

So, when the player is going towards the wall and is colliding, when I press jump, the player gain some extra movement and goes higher and farther than expected (Yellow Line).

When I jump without colliding with the wall (Black Line), the max Height and max Distance are fine. They are the same values when the player is Idle (not moving) and press Jump.

My expected behavior is the Green Line. When colliding the wall and moving towards the wall, the max height value must be the same as jumping without colliding.

Here is my CharacterController code:

 private void Update() {
            Vector3 moveDirection = _playerInput.Movement;

            //Just check if running, sprinting or idle
            CheckMoveState(moveDirection);

            if (moveState != MoveState.Idle) {
                _characterController.transform.rotation = Quaternion.Euler(0, Camera.main.transform.eulerAngles.y, 0);
            }

            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= GetMoveSpeed();

            if (_characterController.isGrounded) {

                if (_playerInput.Jump) {
                    moveDirection.y = jumpSpeed;
                }
            }
            else {
                moveDirection.y = _characterController.velocity.y;
            }

            moveDirection.y -= gravity * Time.deltaTime;

            _characterController.Move(moveDirection * Time.deltaTime);
        }

Can someone help me with my 2 problems?
1 - Yellow Line problem
2 - Player stuck in wall while in the air and moving towards the wall

Have you considered just making an animation to get over the wall?

That way when you jump early, it does nothing but slide you forward until you hit the wall, then does the animation.

If you jump late it just stops you against the wall until animating.

And you could give it so if the timing is just-so, the animation over the wall goes 2x as fast, so he feels like he reloaded perfectly in Gears of War…

@Kurt-Dekker no, i havent considered. I am new in Unity and do not know much about animations, but i am guessing that i am going to use Mekanim for that, and each possible way to go over a wall, will be a state in Mekanim Finite State Machine. Like, if the player jump early and hit the wall, its a state. If the player is colliding with the wall and presse jump, another state. Is that Right?

No, re-read the second sentence I wrote above, not an animation, but rather code that keeps you going forward and brings you to where the leap over animation starts against the wall.

That way there would be one kind of jump per wall type (height / thickness), and obviously you would start with ONE and get that working, see if it does what you want.

It really comes down to what you’re comfortable with. Code can work too but it can be very fiddly to reason about why a motion doesn’t look right when it is in code, whereas with an animation you just scrub it back and forth and adjust keys until it works.