anchor.diff:  %% @spec end_session() -> ok | {error, invalid_token}.
   %% @end
   %%--------------------------------------------------------------------
  --spec end_session(binary()) -> ok | {error, invalid_token}.
  +-spec end_session(SessionToken) -> ok | {error, invalid_token}
  +                                       when SessionToken :: binary().
   end_session(SessionToken) ->
       gen_server:call(?MODULE, {proc_req, end_session, SessionToken}).
   
  
positive.code: %%              {error, Reason}
  %% @end
  %%--------------------------------------------------------------------
  -spec submit_payload(binary(), binary(), binary(), boolean()) ->
                              {ok, payload_added} |
                              {ok, payload_added, session_ended} |
                              {error, string()}.
  submit_payload(User, SessionToken, Payload, Final) ->
      gen_server:call(?MODULE, {proc_req, submit_payload, {User,
                                                           SessionToken,
  
negative.code: %%% Internal functions
  %%%===================================================================
  
  -spec priv_new_session(User, Path) -> {ok, Token} |
                                        {error, invalid_user} |
                                        {error, invalid_path}
                                            when User :: binary(),
                                                 Path :: binary(),
                                                 Token :: binary().
  priv_new_session(User, Path) ->
      % Check if user is registered with the cvmfs_auth service and which
      % paths he is allowed to modify
  