Package gov.nist.javax.sip.header

Examples of gov.nist.javax.sip.header.RecordRouteList


            }
            throw new SipException("Cannot ACK a provisional response!");
        }
        SIPRequest ackRequest = originalRequest.createAckRequest((To) lastResponse.getTo());
        // Pull the record route headers from the last reesponse.
        RecordRouteList recordRouteList = lastResponse.getRecordRouteHeaders();
        if (recordRouteList == null) {
            // If the record route list is null then we can
            // construct the ACK from the specified contact header.
            // Note the 3xx check here because 3xx is a redirect.
            // The contact header for the 3xx is the redirected
            // location so we cannot use that to construct the
            // request URI.
            if (lastResponse.getContactHeaders() != null
                    && lastResponse.getStatusCode() / 100 != 3) {
                Contact contact = (Contact) lastResponse.getContactHeaders().getFirst();
                javax.sip.address.URI uri = (javax.sip.address.URI) contact.getAddress().getURI()
                        .clone();
                ackRequest.setRequestURI(uri);
            }
            return ackRequest;
        }

        ackRequest.removeHeader(RouteHeader.NAME);
        RouteList routeList = new RouteList();
        // start at the end of the list and walk backwards
        ListIterator<RecordRoute> li = recordRouteList.listIterator(recordRouteList.size());
        while (li.hasPrevious()) {
            RecordRoute rr = (RecordRoute) li.previous();

            Route route = new Route();
            route.setAddress((AddressImpl) ((AddressImpl) rr.getAddress()).clone());
View Full Code Here


                // only update the route set if the dialog is not in the confirmed state.
                if ((this.getState() != DialogState.CONFIRMED
                        && this.getState() != DialogState.TERMINATED) ||
                        this.pendingRouteUpdateOn202Response ) {
                    RecordRouteList rrlist = sipResponse.getRecordRouteHeaders();
                    // Add the route set from the incoming response in reverse
                    // order for record route headers.
                    if (rrlist != null) {
                        this.addRoute(rrlist);
                    } else {
View Full Code Here

       
        // Fix for issue #225: mustn't learn Route set from mid-dialog requests
        if ( sipRequest.getToTag()!=null ) return;
       
        // Incoming Request has the route list
        RecordRouteList rrlist = sipRequest.getRecordRouteHeaders();
        // Add the route set from the incoming response in reverse
        // order
        if (rrlist != null) {
            this.addRoute(rrlist);
        } else {
View Full Code Here

                 * record route headers present in the original request so the loop will not
                 * execute.
                 */
                if ( this.getState() != DialogState.CONFIRMED && this.getState() != DialogState.TERMINATED ) {
                    if (originalRequest != null) {
                        RecordRouteList rrList = originalRequest.getRecordRouteHeaders();
                        if (rrList != null) {
                            ListIterator<RecordRoute> it = rrList.listIterator(rrList.size());
                            while (it.hasPrevious()) {
                                RecordRoute rr = (RecordRoute) it.previous();
                                Route route = (Route) routeList.getFirst();
                                if (route != null && rr.getAddress().equals(route.getAddress())) {
                                    routeList.removeFirst();
View Full Code Here

        /*
         * Copy the record route headers from the request to the response ( Issue 160 ). Note that
         * other 1xx headers do not get their Record Route headers copied over but reliable
         * provisional responses do. See RFC 3262 Table 2.
         */
        RecordRouteList rrl = request.getRecordRouteHeaders();
        if (rrl != null) {
            RecordRouteList rrlclone = (RecordRouteList) rrl.clone();
            response.setHeader(rrlclone);
        }

        return response;
    }
View Full Code Here

                // only update the route set if the dialog is not in the confirmed state.
                if ((this.getState() != DialogState.CONFIRMED
                        && this.getState() != DialogState.TERMINATED) ||
                        this.pendingRouteUpdateOn202Response ) {
                    RecordRouteList rrlist = sipResponse.getRecordRouteHeaders();
                    // Add the route set from the incoming response in reverse
                    // order for record route headers.
                    if (rrlist != null) {
                        this.addRoute(rrlist);
                    } else {
View Full Code Here

       
        // Fix for issue #225: mustn't learn Route set from mid-dialog requests
        if ( sipRequest.getToTag()!=null ) return;
       
        // Incoming Request has the route list
        RecordRouteList rrlist = sipRequest.getRecordRouteHeaders();
        // Add the route set from the incoming response in reverse
        // order
        if (rrlist != null) {
            this.addRoute(rrlist);
        } else {
View Full Code Here

                 * record route headers present in the original request so the loop will not
                 * execute.
                 */
                if ( this.getState() != DialogState.CONFIRMED && this.getState() != DialogState.TERMINATED ) {
                    if (originalRequest != null) {
                        RecordRouteList rrList = originalRequest.getRecordRouteHeaders();
                        if (rrList != null) {
                            ListIterator<RecordRoute> it = rrList.listIterator(rrList.size());
                            while (it.hasPrevious()) {
                                RecordRoute rr = (RecordRoute) it.previous();
                                Route route = (Route) routeList.getFirst();
                                if (route != null && rr.getAddress().equals(route.getAddress())) {
                                    routeList.removeFirst();
View Full Code Here

        /*
         * Copy the record route headers from the request to the response ( Issue 160 ). Note that
         * other 1xx headers do not get their Record Route headers copied over but reliable
         * provisional responses do. See RFC 3262 Table 2.
         */
        RecordRouteList rrl = request.getRecordRouteHeaders();
        if (rrl != null) {
            RecordRouteList rrlclone = (RecordRouteList) rrl.clone();
            response.setHeader(rrlclone);
        }

        return response;
    }
View Full Code Here

                // only update the route set if the dialog is not in the
                // confirmed state.
                if ((this.getState() != DialogState.CONFIRMED && this
                        .getState() != DialogState.TERMINATED)
                        || this.pendingRouteUpdateOn202Response) {
                    RecordRouteList rrlist = sipResponse
                            .getRecordRouteHeaders();
                    // Add the route set from the incoming response in reverse
                    // order for record route headers.
                    if (rrlist != null) {
                        this.addRoute(rrlist);
View Full Code Here

TOP

Related Classes of gov.nist.javax.sip.header.RecordRouteList

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.