public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { super.readExternal(in); String messageString = in.readUTF(); try { message = SipFactoryImpl.messageFactory.createResponse(messageString); } catch (ParseException e) { throw new IllegalArgumentException("Message " + messageString + " previously serialized could not be reparsed", e); } boolean isOriginalRequestSerialized = in.readBoolean(); if (isOriginalRequestSerialized) { originalRequest = (SipServletRequestImpl) in.readObject(); } boolean isProxyBranchSerialized = in.readBoolean(); if (isProxyBranchSerialized) { proxyBranch = (ProxyBranchImpl) in.readObject(); } isProxiedResponse = in.readBoolean(); isResponseForwardedUpstream = in.readBoolean(); isAckGenerated = in.readBoolean(); isPrackGenerated = in.readBoolean(); hasBeenReceived = in.readBoolean(); }
/** * * @param errorCode * @param transaction * @param request * @param sipProvider */ public static void sendErrorResponse(SipApplicationDispatcher sipApplicationDispatcher, int errorCode, ServerTransaction transaction, Request request, SipProvider sipProvider) { try{ Response response=SipFactoryImpl.messageFactory.createResponse (errorCode,request); if (transaction!=null) { transaction.sendResponse(response); } else { sipProvider.sendResponse(response); } sipApplicationDispatcher.updateResponseStatistics(response, false); } catch (Exception e) { logger.error("Problem while sending the error response to the following request " + request.toString(), e); } }
private void sendResponse(RequestEvent event, int responseCode) throws SipException, InvalidArgumentException, ParseException { event.getServerTransaction().sendResponse( sipProvider.getMessageFactory().createResponse(responseCode, event.getRequest())); }
private void respond(RequestEvent evt, int cause) { Request request = evt.getRequest(); ServerTransaction tx = evt.getServerTransaction(); try { Response response = messageFactory.createResponse(cause, request); tx.sendResponse(response); } catch (Exception e) { logger.warning("Unexpected error: ", e); } }
private void respond(RequestEvent evt, int cause) { Request request = evt.getRequest(); ServerTransaction tx = evt.getServerTransaction(); try { Response response = messageFactory.createResponse(cause, request); tx.sendResponse(response); } catch (Exception e) { logger.warning("Unexpected error: ", e); } }
private void sendRegisterSuccessResponse(int resultCode, List<RegistrationBinding> bindings, ServerTransaction serverTransaction) throws ParseException, SipException, InvalidArgumentException { List<?> contactHeaders = getContactHeaders(bindings); Response res = (this.messageFactory.createResponse(resultCode, serverTransaction.getRequest())); if ((contactHeaders != null) && (!contactHeaders.isEmpty())) { if (this.tracer.isFineEnabled()) { this.tracer .fine("Adding " + contactHeaders.size() + " headers"); } for (int i = 0; i < contactHeaders.size(); i++) { ContactHeader hdr = (ContactHeader) contactHeaders.get(i); res.addHeader(hdr); } } DateHeader dateHeader = this.headerFactory .createDateHeader(new GregorianCalendar()); res.setHeader(dateHeader); serverTransaction.sendResponse(res); }
private void sendErrorResponse(int resultCode, ServerTransaction serverTransaction) throws ParseException, SipException, InvalidArgumentException { Response response = this.messageFactory.createResponse(resultCode, serverTransaction.getRequest()); if (resultCode == Response.INTERVAL_TOO_BRIEF) { response.setHeader(this.headerFactory .createDateHeader(new GregorianCalendar())); // set min expires header response.addHeader(this.headerFactory.createHeader("Min-Expires", Long.toString(config.getSipRegistrationMinExpires()))); } serverTransaction.sendResponse(response); }
private void processPublish(RequestEvent requestEvent, ServerTransaction serverTransactionId) { try { Request request = requestEvent.getRequest(); LOG.debug("SipPresenceAgentListener: Received a Publish request, sending OK"); LOG.debug("SipPresenceAgentListener request: {}", request); EventHeader eventHeader = (EventHeader) requestEvent.getRequest().getHeader(EventHeader.NAME); Response response = sipPresenceAgent.getConfiguration().getMessageFactory().createResponse(202, request); sipPresenceAgent.getProvider().sendResponse(response); // Send notification to subscriber sendNotification(eventHeader, false, request.getContent()); } catch (Exception e) { LOG.error("Exception thrown during publish/notify processing in the Sip Presence Agent Listener", e); } }
private void replyToRequestEvent(RequestEvent event, int status) { try { event.getServerTransaction().sendResponse( sipProvider.getMessageFactory().createResponse(status, event.getRequest())); } catch (Throwable e) { tracer.severe("Failed to reply to request event:\n" + event, e); } }
/** * After receiving a BYE Request, an OK Respose has to be sent. * * @param byeEvent */ private void byeRequestOkResponse(RequestEvent byeEvent) { log.info("########## VOICE MAIL SBB: byeRequestOkResponse ##########"); Request request = byeEvent.getRequest(); ServerTransaction tx = byeEvent.getServerTransaction(); try { Response response = getMessageFactory().createResponse(Response.OK, request); tx.sendResponse(response); } catch (Exception e) { log.severe(e.getMessage(), e); } }
private void sendServerError(String message, int errorCode) { try { Response response = getMessageFactory() .createResponse( Response.SERVER_INTERNAL_ERROR, this.getInviteRequest(), getHeaderFactory().createContentTypeHeader("text", "plain"), message.getBytes()); this.getServerTransaction().sendResponse(response); } catch (ParseException e) { log.severe(e.getMessage(), e); } catch (SipException e) { log.severe(e.getMessage(), e); } catch (InvalidArgumentException e) { log.severe(e.getMessage(), e); } releaseState(); }
public void onCallTerminated(RequestEvent evt, ActivityContextInterface aci) { EndpointIdentifier endpointID = new EndpointIdentifier(this.getEndpointName(), JBOSS_BIND_ADDRESS + ":" + MGCP_PEER_PORT); DeleteConnection deleteConnection = new DeleteConnection(this, endpointID); deleteConnection.setTransactionHandle(mgcpProvider.getUniqueTransactionHandler()); mgcpProvider.sendMgcpEvents(new JainMgcpEvent[] { deleteConnection }); ServerTransaction tx = evt.getServerTransaction(); Request request = evt.getRequest(); try { Response response = messageFactory.createResponse(Response.OK, request); tx.sendResponse(response); } catch (Exception e) { logger.severe("Error while sending DLCX ", e); } }
public void onInviteEvent(javax.sip.RequestEvent requestEvent, ActivityContextInterface aci) { try { ServerTransaction serverTransaction = requestEvent.getServerTransaction(); // send 100 // serverTransaction.sendResponse(messageFactory.createResponse(100,requestEvent.getRequest())); // create dialog and attach this entity to it's aci DialogActivity dialog = (DialogActivity) sipFactoryProvider.getNewDialog(serverTransaction); sipActivityContextInterfaceFactory.getActivityContextInterface(dialog).attach(this.sbbContext.getSbbLocalObject()); // send 200 ok Response response = messageFactory .createResponse(Response.OK,requestEvent.getRequest()); response.addHeader(getContactHeader()); ((ToHeader)response.getHeader(ToHeader.NAME)).setTag(Utils.getInstance().generateTag()); serverTransaction.sendResponse(response); } catch (Exception ex) { ex.printStackTrace(); } }
private void initialSipSessionSetup(RequestEvent event, ActivityContextInterface aci) throws ParseException, SipException, InvalidArgumentException { // store the server tx aci in a cmp shortcut setServerTransactionACI(aci); // send trying response ServerTransaction serverTransaction = event.getServerTransaction(); Response response = sipRaSbbInterface .getMessageFactory() .createResponse(Response.TRYING, serverTransaction.getRequest()); serverTransaction.sendResponse(response); // create sip dialog and attach to its activity Dialog dialog = sipRaSbbInterface.getNewDialog(serverTransaction); ActivityContextInterface dialogAci = sipRaAciFactory .getActivityContextInterface((DialogActivity) dialog); dialogAci.attach(sbbContext.getSbbLocalObject()); // store the dialog aci in a cmp shortcut setDialogACI(dialogAci); }
public void onCallTerminated(RequestEvent evt, ActivityContextInterface aci) { try { MgcpConnectionActivity activity = getMgcpConnectionActivity(); DeleteConnection deleteConnection = new DeleteConnection(this, activity.getEndpointIdentifier()); deleteConnection.setTransactionHandle(mgcpProvider.getUniqueTransactionHandler()); mgcpProvider.sendMgcpEvents(new JainMgcpEvent[] { deleteConnection }); ServerTransaction tx = evt.getServerTransaction(); Request request = evt.getRequest(); Response response = messageFactory.createResponse(Response.OK, request); tx.sendResponse(response); cancelTimer(); } catch (Exception e) { logger.severe("Error while sending OK for BYE", e); } }
private void initialSipSessionSetup(RequestEvent event, ActivityContextInterface aci) throws ParseException, SipException, InvalidArgumentException { // store the server tx aci in a cmp shortcut setServerTransactionACI(aci); // send trying response ServerTransaction serverTransaction = event.getServerTransaction(); Response response = sipRaSbbInterface .getMessageFactory() .createResponse(Response.TRYING, serverTransaction.getRequest()); serverTransaction.sendResponse(response); // create sip dialog and attach to its activity Dialog dialog = sipRaSbbInterface.getNewDialog(serverTransaction); ActivityContextInterface dialogAci = sipRaAciFactory .getActivityContextInterface((DialogActivity) dialog); dialogAci.attach(sbbContext.getSbbLocalObject()); // store the dialog aci in a cmp shortcut setDialogACI(dialogAci); }
private void abortSipSessionSetup() { SbbLocalObject sbbLocalObject = sbbContext.getSbbLocalObject(); ActivityContextInterface dialogACI = getDialogACI(); if (dialogACI != null) { dialogACI.detach(sbbLocalObject); try { Dialog dialog = (Dialog) dialogACI.getActivity(); dialog.delete(); } catch (Exception e) { tracer.severe("failed to abort sip dialog.", e); } } ActivityContextInterface serverTransactionACI = getServerTransactionACI(); if (serverTransactionACI != null) { serverTransactionACI.detach(sbbLocalObject); ServerTransaction serverTransaction = (ServerTransaction) serverTransactionACI .getActivity(); try { Response response = sipRaSbbInterface.getMessageFactory() .createResponse(Response.SERVER_INTERNAL_ERROR, serverTransaction.getRequest()); serverTransaction.sendResponse(response); } catch (Exception e) { tracer.severe("failed to abort sip server tx.", e); } } }
private void abortSipSessionSetup() { SbbLocalObject sbbLocalObject = sbbContext.getSbbLocalObject(); ActivityContextInterface dialogACI = getDialogACI(); if (dialogACI != null) { dialogACI.detach(sbbLocalObject); try { Dialog dialog = (Dialog) dialogACI.getActivity(); dialog.delete(); } catch (Exception e) { tracer.severe("failed to abort sip dialog.", e); } } ActivityContextInterface serverTransactionACI = getServerTransactionACI(); if (serverTransactionACI != null) { serverTransactionACI.detach(sbbLocalObject); ServerTransaction serverTransaction = (ServerTransaction) serverTransactionACI .getActivity(); try { Response response = sipRaSbbInterface.getMessageFactory() .createResponse(Response.SERVER_INTERNAL_ERROR, serverTransaction.getRequest()); serverTransaction.sendResponse(response); } catch (Exception e) { tracer.severe("failed to abort sip server tx.", e); } } }
private void finishSipSessionSetup(byte[] sdp) throws ParseException, SipException, InvalidArgumentException { ServerTransaction serverTransaction = (ServerTransaction) getServerTransactionACI() .getActivity(); ContentTypeHeader contentType = sipRaSbbInterface.getHeaderFactory() .createContentTypeHeader("application", "sdp"); String localAddress = sipRaSbbInterface.getListeningPoints()[0] .getIPAddress(); int localPort = sipRaSbbInterface.getListeningPoints()[0].getPort(); Address contactAddress = sipRaSbbInterface.getAddressFactory() .createAddress("sip:" + localAddress + ":" + localPort); ContactHeader contact = sipRaSbbInterface.getHeaderFactory() .createContactHeader(contactAddress); Response ok = sipRaSbbInterface.getMessageFactory().createResponse( Response.OK, serverTransaction.getRequest(), contentType, sdp); ok.setHeader(contact); serverTransaction.sendResponse(ok); }
private void finishSipSessionSetup(byte[] sdp) throws ParseException, SipException, InvalidArgumentException { ServerTransaction serverTransaction = (ServerTransaction) getServerTransactionACI() .getActivity(); ContentTypeHeader contentType = sipRaSbbInterface.getHeaderFactory() .createContentTypeHeader("application", "sdp"); String localAddress = sipRaSbbInterface.getListeningPoints()[0] .getIPAddress(); int localPort = sipRaSbbInterface.getListeningPoints()[0].getPort(); Address contactAddress = sipRaSbbInterface.getAddressFactory() .createAddress("sip:" + localAddress + ":" + localPort); ContactHeader contact = sipRaSbbInterface.getHeaderFactory() .createContactHeader(contactAddress); Response ok = sipRaSbbInterface.getMessageFactory().createResponse( Response.OK, serverTransaction.getRequest(), contentType, sdp); ok.setHeader(contact); serverTransaction.sendResponse(ok); }