Permalink
Browse files

fix: Works around a bug in Edge

  • Loading branch information...
bgrozev committed Jun 23, 2017
1 parent 51baa62 commit feecacefc58e54e83bef527af5b4e058cdcc0403
Showing with 29 additions and 0 deletions.
  1. +29 −0 src/main/java/org/ice4j/attribute/UsernameAttribute.java
@@ -17,6 +17,8 @@
*/
package org.ice4j.attribute;
import org.ice4j.*;
import java.util.*;
/**
@@ -33,6 +35,24 @@
*/
public static final String NAME = "USERNAME";
/**
* The name of the property which controls whether trailing zeroes should
* be stripped when decoding USERNAME attributes.
*/
public static final String STRIP_TRAILING_ZEROES_PNAME
= "org.ice4j.attribute.UsernameAttribute.STRIP_TRAILING_ZEROES";
/**
* Whether trailing zeroes should be stripped when decoding USERNAME
* attributes. This is necessary to work around a bug in Edge described
* here:
* https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12332457/
* and here:
* https://github.com/jitsi/lib-jitsi-meet/issues/498
*/
private boolean stripTrailingZeroes
= StackProperties.getBoolean(STRIP_TRAILING_ZEROES_PNAME, false);
/**
* Username value.
*/
@@ -56,8 +76,17 @@
* offset is equal to the index of the first byte after length)
* @param length the length of the binary array.
*/
@Override
void decodeAttributeBody(byte[] attributeValue, char offset, char length)
{
if (stripTrailingZeroes)
{
while (length > 0 && attributeValue[offset + length] == 0)
{
length--;
}
}
username = new byte[length];
System.arraycopy(attributeValue, offset, username, 0, length);
}

0 comments on commit feecace

Please sign in to comment.