Fixes issue with error COIN packets. If error COIN packet is recieved it isn't handled as normal COIN packet anymore, jitsi only displays systray popup message with the error, logs the error and displays error text in the peer panel.

cusax-fix
hristoterezov 12 years ago
parent ba7fc7b40f
commit e278630c4d

@ -190,6 +190,7 @@ service.gui.ENTER_PHONE_NUMBER=Enter phone number
service.gui.ENTER_NAME_OR_NUMBER=Enter name or number
service.gui.ERROR=Error
service.gui.ERROR_WAS=Error was: {0}
service.gui.ERROR_RECEIVED_FROM=Error received from
service.gui.ESTIMATED_TIME=Estimated time:
service.gui.EVENTS=Events
service.gui.EXIT=E&xit
@ -393,6 +394,7 @@ service.gui.PREVIOUS=Previous
service.gui.PREVIOUS_TOOLTIP=Browse older conversations
service.gui.PRINT=&Print
service.gui.PROACTIVE_NOTIFICATION=is writing a message
service.gui.PROBLEMS_ENCOUNTERED=Problems encountered
service.gui.PROTOCOL=Protocol
service.gui.PUT_OFF_HOLD=Put off hold
service.gui.PUT_ON_HOLD=Put on hold

@ -14,6 +14,7 @@
import javax.swing.*;
import javax.swing.Timer;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.event.*;
import net.java.sip.communicator.impl.gui.main.call.*;
import net.java.sip.communicator.service.protocol.*;
@ -24,6 +25,7 @@
* <tt>CallConference</tt> and is contained in a <tt>CallPanel</tt>.
*
* @author Lyubomir Marinov
* @author Hristo Terezov
*/
public abstract class BasicConferenceCallPanel
extends JPanel
@ -243,6 +245,29 @@ protected void conferenceMemberAdded(CallPeerConferenceEvent ev)
{
updateViewFromModel();
}
/**
* Notifies this instance that a <tt>CallPeer</tt> associated with a
* <tt>Call</tt> participating in the telephony conference received a error
* packet.
*
* @param ev a <tt>CallPeerConferenceEvent</tt> which specifies the
* <tt>CallPeer</tt> which sent the error packet and an error message.
*/
protected void conferenceMemberErrorReceived(CallPeerConferenceEvent ev)
{
CallPeer callPeer = ev.getSourceCallPeer();
callPeerPanels.get(callPeer).setErrorReason(
GuiActivator.getResources().getI18NString(
"service.gui.PROBLEMS_ENCOUNTERED"));
GuiActivator.getAlertUIService().showAlertPopup(
GuiActivator.getResources().getI18NString(
"service.gui.ERROR_RECEIVED_FROM")
+ callPeer.getDisplayName(),
ev.getErrorString());
}
/**
* Notifies this instance that a <tt>CallPeer</tt> associated with a
@ -669,6 +694,17 @@ public void callStateChanged(CallChangeEvent ev)
BasicConferenceCallPanel.this.callStateChanged(ev);
}
/**
* Invokes
* {@link BasicConferenceCallPanel#conferenceMemberErrorReceived(
* CallPeerConferenceEvent)}.
*/
public void conferenceMemberErrorReceived(
CallPeerConferenceEvent ev)
{
BasicConferenceCallPanel.this.conferenceMemberErrorReceived(ev);
}
/**
* {@inheritDoc}
*

@ -15,6 +15,7 @@
import net.java.sip.communicator.plugin.desktoputil.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.event.*;
import net.java.sip.communicator.util.Logger;
import net.java.sip.communicator.util.skin.*;
import org.jitsi.service.protocol.event.*;
@ -127,6 +128,12 @@ public ConferenceFocusPanel(
*/
private void addConferenceMemberPanel(ConferenceMember conferenceMember)
{
Logger.getLogger(ConferenceFocusPanel.class).info("AAAAAAAAAAAAAAA" ,
new Exception("addd!!"));
for(ConferenceMember c: conferenceMemberPanels.keySet())
{
Logger.getLogger(ConferenceFocusPanel.class).info("CCC/" + c.getDisplayName());
}
/*
* The local user/peer should not be depicted by a ConferenceMemberPanel
* because it is not the responsibility of ConferenceFocusPanel and
@ -159,6 +166,9 @@ private void addConferenceMemberPanel(ConferenceMember conferenceMember)
*/
conferenceMemberPanels.put(conferenceMember, conferenceMemberPanel);
Logger.getLogger(ConferenceFocusPanel.class).info("AAAAAAAAAAAAAAA11111"
+ conferenceMember.getDisplayName(),
new Exception("addd111!!"));
/*
* Add the newly-initialized ConferenceMemberPanel to the user interface
* hierarchy of this view.

@ -370,6 +370,7 @@ public boolean accept(Packet packet)
public void processPacket(Packet packet)
{
CoinIQ coinIQ = (CoinIQ) packet;
String errorMessage = null;
//first ack all "set" requests.
if (coinIQ.getType() == IQ.Type.SET)
@ -378,7 +379,22 @@ public void processPacket(Packet packet)
parentProvider.getConnection().sendPacket(ack);
}
if(coinIQ.getType() == IQ.Type.ERROR)
{
logger.error("Received error in COIN packet.");
XMPPError error = coinIQ.getError();
if(error != null)
{
String msg = error.getMessage();
errorMessage = ((msg != null)? (msg + " ") : "")
+ "Error code: " + error.getCode();
logger.error(errorMessage);
}
}
String sid = coinIQ.getSID();
if (sid != null)
@ -386,12 +402,20 @@ public void processPacket(Packet packet)
CallPeerJabberImpl callPeer
= getBasicTelephony().getActiveCallsRepository().findCallPeer(
sid);
if (callPeer != null)
{
if (logger.isDebugEnabled())
logger.debug("Processing COIN from " + coinIQ.getFrom()
+ " (version=" + coinIQ.getVersion() + ")");
if(coinIQ.getType() == IQ.Type.ERROR)
{
callPeer.fireConferenceMemberErrorEvent(errorMessage);
return;
}
handleCoin(callPeer, coinIQ);
}
}

@ -646,6 +646,13 @@ public void conferenceMemberAdded(CallPeerConferenceEvent conferenceEvent)
}
}
/**
* {@inheritDoc}
*
* Not used.
*/
public void conferenceMemberErrorReceived(CallPeerConferenceEvent ev) {}
/**
* {@inheritDoc}
*

@ -266,7 +266,31 @@ public void addConferenceMember(ConferenceMember conferenceMember)
conferenceMember));
}
}
/**
* Fires
* <tt>CallPeerConferenceEvent#CONFERENCE_MEMBER_ERROR_RECEIVED</tt> to
* the currently registered <tt>CallPeerConferenceListener</tt>s.
*
* @param errorMessage error message that can be displayed.
*/
public void fireConferenceMemberErrorEvent(String errorMessge)
{
if(errorMessge == null || errorMessge.length() == 0)
{
logger.warn("The error message for " + this.getDisplayName()
+ " null or empty string.");
return;
}
fireCallPeerConferenceEvent(
new CallPeerConferenceEvent(
this,
CallPeerConferenceEvent
.CONFERENCE_MEMBER_ERROR_RECEIVED,
null,
errorMessge));
}
/**
* Finds the first <tt>ConferenceMember</tt> whose <tt>audioSsrc</tt> is
* equals to a specific value. The method is meant for very frequent use so
@ -436,6 +460,9 @@ protected void fireCallPeerConferenceEvent(
case CallPeerConferenceEvent.CONFERENCE_MEMBER_REMOVED:
eventIDString = "CONFERENCE_MEMBER_REMOVED";
break;
case CallPeerConferenceEvent.CONFERENCE_MEMBER_ERROR_RECEIVED:
eventIDString = "CONFERENCE_MEMBER_ERROR_RECEIVED";
break;
default:
eventIDString = "UNKNOWN";
break;
@ -461,6 +488,9 @@ protected void fireCallPeerConferenceEvent(
case CallPeerConferenceEvent.CONFERENCE_MEMBER_REMOVED:
listener.conferenceMemberRemoved(conferenceEvent);
break;
case CallPeerConferenceEvent.CONFERENCE_MEMBER_ERROR_RECEIVED:
listener.conferenceMemberErrorReceived(conferenceEvent);
break;
}
}

@ -193,6 +193,20 @@ protected void onCallPeerConferenceEvent(CallPeerConferenceEvent ev)
{
CallConference.this.onCallPeerConferenceEvent(ev);
}
/**
* {@inheritDoc}
*
* Invokes
* {@link CallConference#onCallPeerConferenceEvent(
* CallPeerConferenceEvent)}.
*/
@Override
public void conferenceMemberErrorReceived(
CallPeerConferenceEvent ev)
{
CallConference.this.onCallPeerConferenceEvent(ev);
}
};
/**
@ -692,6 +706,9 @@ private void onCallPeerConferenceEvent(CallPeerConferenceEvent ev)
case CallPeerConferenceEvent.CONFERENCE_MEMBER_REMOVED:
l.conferenceMemberRemoved(ev);
break;
case CallPeerConferenceEvent.CONFERENCE_MEMBER_ERROR_RECEIVED:
l.conferenceMemberErrorReceived(ev);
break;
default:
throw new UnsupportedOperationException(
"Unsupported CallPeerConferenceEvent eventID.");

@ -38,6 +38,14 @@ public void conferenceMemberAdded(CallPeerConferenceEvent ev)
onCallPeerConferenceEvent(ev);
}
/**
* {@inheritDoc}
*
* Dummy implementation of
* {@link #conferenceMemberErrorReceived(CallPeerConferenceEvent)}.
*/
public void conferenceMemberErrorReceived(CallPeerConferenceEvent ev) {}
/**
* {@inheritDoc}
*

@ -55,6 +55,12 @@ public class CallPeerConferenceEvent
*/
public static final int CONFERENCE_MEMBER_REMOVED = 3;
/**
* The ID of <tt>CallPeerConferenceEvent</tt> which notifies
* about an error packet received from a <tt>CallPeer</tt>.
*/
public static final int CONFERENCE_MEMBER_ERROR_RECEIVED = 4;
/**
* The <code>ConferenceMember</code> which has been changed (e.g. added to
* or removed from the conference) if this event has been fired because of
@ -64,12 +70,21 @@ public class CallPeerConferenceEvent
/**
* The ID of this event which may be one of
* {@link #CONFERENCE_FOCUS_CHANGED}, {@link #CONFERENCE_MEMBER_ADDED} and
* {@link #CONFERENCE_FOCUS_CHANGED}, {@link #CONFERENCE_MEMBER_ADDED},
* {@link #CONFERENCE_MEMBER_ERROR_RECEIVED} and
* {@link #CONFERENCE_MEMBER_REMOVED} and indicates the specifics of the
* change in the conference-related information and the details this event
* carries.
*/
private final int eventID;
/**
* The error message associated with the error packet that was received. If
* the eventID is not {@link #CONFERENCE_MEMBER_ERROR_RECEIVED} the value
* should should be <tt>null</tt>.
*/
private final String errorString;
/**
* Initializes a new <code>CallPeerConferenceEvent</code> which is to
@ -112,11 +127,41 @@ public CallPeerConferenceEvent(
CallPeer sourceCallPeer,
int eventID,
ConferenceMember conferenceMember)
{
this(sourceCallPeer, eventID, conferenceMember, null);
}
/**
* Initializes a new <tt>CallPeerConferenceEvent</tt> which is to
* be fired by a specific <tt>CallPeer</tt> and which notifies
* about a change in its conference-related information pertaining to a
* specific <tt>ConferenceMember</tt>.
*
* @param sourceCallPeer the <tt>CallPeer</tt> which is to fire the new
* event
* @param eventID
* the ID of this event which may be
* {@link #CONFERENCE_MEMBER_ADDED} and
* {@link #CONFERENCE_MEMBER_REMOVED} and indicates the specifics
* of the change in the conference-related information and the
* details this event carries
* @param conferenceMember
* the <tt>ConferenceMember</tt> which caused the new event
* to be fired
* @param errorString the error string associated with the error packet that
* is received
*/
public CallPeerConferenceEvent(
CallPeer sourceCallPeer,
int eventID,
ConferenceMember conferenceMember,
String errorString)
{
super(sourceCallPeer);
this.eventID = eventID;
this.conferenceMember = conferenceMember;
this.errorString = errorString;
}
/**
@ -163,4 +208,13 @@ public CallPeer getSourceCallPeer()
{
return (CallPeer) getSource();
}
/**
* Gets the value of {@link #errorString}.
* @return the error string.
*/
public String getErrorString()
{
return errorString;
}
}

@ -45,6 +45,17 @@ public void conferenceFocusChanged(
*/
public void conferenceMemberAdded(
CallPeerConferenceEvent conferenceEvent);
/**
* Notifies this listener about an error packet received from specific
* <tt>CallPeer</tt>.
*
* @param conferenceEvent a <tt>CallPeerConferenceEvent</tt> with ID
* <tt>CallPeerConferenceEvent#CONFERENCE_MEMBER_ERROR_RECEIVED</tt>
* and the error message associated with the packet.
*/
public void conferenceMemberErrorReceived(
CallPeerConferenceEvent conferenceEvent);
/**
* Notifies this listener about the removal of a specific

@ -471,6 +471,14 @@ public void conferenceMemberAdded(CallPeerConferenceEvent conferenceEvent)
mediaHandler.setCsrcAudioLevelListener(this);
}
}
/**
* Dummy implementation of {@link CallPeerConferenceListener
* #conferenceMemberErrorReceived(CallPeerConferenceEvent)}.
*
* @param ev the event
*/
public void conferenceMemberErrorReceived(CallPeerConferenceEvent ev) {};
/**
* Called when this peer stops being a mixer. The method add removes this

Loading…
Cancel
Save