Replacement JAR for b89 for UPNP testing (Apr 12)

Notes on testing the latest builds of MapTool

Moderators: dorpond, trevor, Azhrei

User avatar
Azhrei
Site Admin
Posts: 12086
Joined: Mon Jun 12, 2006 1:20 pm
Location: Tampa, FL

Replacement JAR for b89 for UPNP testing (Apr 12)

Post by Azhrei »

I've added a LOT of debugging to the UPNP library. It will log every network packet it tries to send and every response it receives back. I'm hoping this will provide the data needed to fix the UNP issue once and for all! Whether your UPNP works or fails, your data will help isolate the problem. If you're existing setup works, you may want to unpack MT into a different directory for the purposes of this test so that you can simply delete the directory when you're done.

Here's the process for testing this library. Basically it boils down to copying the file into place and enabling the logging of the upnp modules.

INSTALLING THE TEST

0. Shutdown any existing MapTool session.

1. Download the attached JAR file. The default name is upnplib-1.0.8-nodebug.zip

2. Make a note of the version number embedded in the filename of the two existing files that start with "sbbi" in the lib/ directory of your MapTool installation. Then delete them both. For OSX users, you'll need to right-click on the .app and choose "Show Package Contents..." and navigate down through Contents, Resources, and Java to find the lib/ directory.

3. Copy the downloaded file into the lib/ directory. Rename it so the filename extension is .jar, as in sbbi-upnplib-1.0.5-nodebug.jar. Use the same version number as you found in Step 2. So if the original file from Step 2 was sbbi-upnplib-1.0.4-nodebug.jar, then use that same name as the destination for this step.

4. Copy the attached logging.xml file into your .maptool/ directory and name the new file, logging.xml. You have just configured MapTool to turn on extensive UPNP logging the next time it starts.

TEST MAPTOOL

You can now run the test.

1. Start by deleting the file .maptool/log.txt if it's there.

2. Run MapTool.

3. Leave the default (empty) campaign as it is.

4. Go to File > Start Server... and be sure the UPNP checkbox is turned on.

5. Click OK and wait for the message in the chat window.

6. Once you have the message, disconnect from the server (also on the File menu). Please don't delay when doing this -- we don't want more logging than we absolutely need as it will make problem determination more difficult.

7. Exit MapTool.

Whether it fails or not isn't that important -- the log data has been generated.

You can turn off any future logging by simply deleting the .maptool/logging.xml file.

REPORT YOUR FINDINGS

Send me an email (address below) and attach the .maptool/log.txt file that MapTool created. If you didn't get such a file, or if it's empty, then review the installation steps above and make sure all of them were performed as described. If the wrong library is used, there won't be any logging. If the XML file isn't copied into the right place, there won't be any logging.

If you have multiple routers and can run the test multiple times, please do so! But follow the TEST MAPTOOL steps separately each time so that you have one log.txt file for each router.

If you send me an email through the forum you won't be able to attach any files. Just send a regular email to azhrei-at-eec-dot-com (as usual, replace "-at-" and "-dot-" with the right characters ;)). I will respond with "Thanks, I got it" within 48 hours so you know it wasn't eaten by my spam filters.

There is no personally identifiable information in the log so you can attach it here if you like (mine is shown in the next post). Please ZIP it up first and then attach it -- that will preserve any funky characters that might be embedded in the data stream. (Copy/paste might remove those characters.) If you have multiple files you can ZIP them all up into a single archive and send or attach that.

Edit: Rebuilt the JAR using Java 6 so that the "Version 51" error doesn't happen. "Oops, my bad."
Attachments
upnplib-1.0.8-nodebug.zip
replacement library (update 4)
(99.82 KiB) Downloaded 161 times
logging.xml
configuration file
(1.82 KiB) Downloaded 131 times
Last edited by Azhrei on Fri Apr 19, 2013 2:55 pm, edited 6 times in total.
Reason: updated UPNP library to 1.0.8

User avatar
Azhrei
Site Admin
Posts: 12086
Joined: Mon Jun 12, 2006 1:20 pm
Location: Tampa, FL

Re: Replacement JAR for b89 for UPNP testing

Post by Azhrei »

Here's the log file that my router just produced. It's a TL-Link with the stock firmware. If you look closely you'll see an error message at the end. Apparently the implementation has a bug in it such that the UPNP port mapping is reported as invalid so it's not deleted.

In addition, this router is not using XML namespace prefixes, which may be why it's working. The previous failures in the UPNP library were in regards to XML namespace prefix support...

I have another router with OpenWRT installed and I'll be doing that one as well. (Although I won't be posting it here or emailing it to myself. ;))

Code: Select all

2013-04-07 23:15:50,722 [upnp.Discovery:?] DEBUG - Sending discovery message on 239.255.255.250:1900 multicast address form ip 192.168.0.30:
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 3
ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1


2013-04-07 23:15:53,182 [upnp.HttpResponse:?] DEBUG - Response: CACHE-CONTROL: max-age=100

2013-04-07 23:15:53,183 [upnp.HttpResponse:?] DEBUG - Response: DATE: Sun, 07 Apr 2013 22:15:47 GMT

2013-04-07 23:15:53,183 [upnp.HttpResponse:?] DEBUG - Response: EXT:

2013-04-07 23:15:53,183 [upnp.HttpResponse:?] DEBUG - Response: LOCATION: http://192.168.0.1:1900/igd.xml

2013-04-07 23:15:53,184 [upnp.HttpResponse:?] DEBUG - Response: SERVER: ipos/7.0 UPnP/1.0 TL-WR841N/8.0

2013-04-07 23:15:53,184 [upnp.HttpResponse:?] DEBUG - Response: ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1

2013-04-07 23:15:53,184 [upnp.HttpResponse:?] DEBUG - Response: USN: uuid:060b7353-fca6-4070-85f4-1fbfb9add62c::urn:schemas-upnp-org:device:InternetGatewayDevice:1

2013-04-07 23:15:53,185 [upnp.DiscoveryListener:?] DEBUG - Processing http://192.168.0.1:1900/igd.xml device description location
2013-04-07 23:15:53,306 [upnp.JXPathParser:?] DEBUG - Raw xml doc:
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
	<specVersion>
		<major>1</major>
		<minor>0</minor>
	</specVersion>
<URLBase></URLBase>
	<device>
		<deviceType>urn:schemas-upnp-org:device:InternetGatewayDevice:1</deviceType>
		<presentationURL>http://192.168.0.1:80/      </presentationURL>
		<friendlyName>Wireless Router TL-WR841N</friendlyName>
       		<manufacturer>TP-LINK</manufacturer>
                         		<manufacturerURL>http://www.tp-link.com</manufacturerURL>
          		<modelDescription>Wireless Router TL-WR841N</modelDescription>
       		<modelName>TL-WR841N</modelName>
                       		<modelNumber>8.0</modelNumber>
                             		<modelURL>http://192.168.0.1:80</modelURL>
        	<serialNumber>none</serialNumber>
		<UDN>uuid:060b7353-fca6-4070-85f4-1fbfb9add62c</UDN>
		<UPC>00000-00001</UPC>
		<serviceList>
			<service>
				<serviceType>urn:schemas-upnp-org:service:Layer3Forwarding:1</serviceType>
				<serviceId>urn:upnp-org:serviceId:L3Forwarding1</serviceId>
				<controlURL>/l3f</controlURL>
				<eventSubURL>/l3f</eventSubURL>
				<SCPDURL>/l3f.xml</SCPDURL>
			</service>
		</serviceList>
		<deviceList>
		<device>
			<deviceType>urn:schemas-upnp-org:device:WANDevice:1</deviceType>
			<friendlyName>Wireless Router TL-WR841N</friendlyName>
       			<manufacturer>TP-LINK</manufacturer>
                         			<manufacturerURL>http://www.tp-link.com</manufacturerURL>
          			<modelDescription>Wireless Router TL-WR841N</modelDescription>
       			<modelName>TL-WR841N</modelName>
                       			<modelNumber>8.0</modelNumber>
                             			<modelURL>http://192.168.0.1:80</modelURL>
        		<serialNumber>none</serialNumber>
			<UDN>uuid:254e9977-8964-49f3-b8d5-51acb7bd40fc</UDN>
			<UPC>00000-00001</UPC>
			<serviceList>
				<service>
					<serviceType>urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1</serviceType>
					<serviceId>urn:upnp-org:serviceId:WANCommonIFC1</serviceId>
					<controlURL>/ifc</controlURL>
					<eventSubURL>/ifc</eventSubURL>
					<SCPDURL>/ifc.xml</SCPDURL>
				</service>
			</serviceList>
			<deviceList>
				<device>
					<deviceType>urn:schemas-upnp-org:device:WANConnectionDevice:1</deviceType>
					<friendlyName>Wireless Router TL-WR841N</friendlyName>
       					<manufacturer>TP-LINK</manufacturer>
                         					<manufacturerURL>http://www.tp-link.com</manufacturerURL>
          					<modelDescription>Wireless Router TL-WR841N</modelDescription>
       					<modelName>TL-WR841N</modelName>
                       					<modelNumber>8.0</modelNumber>
                             					<modelURL>http://192.168.0.1:80</modelURL>
        				<serialNumber>none</serialNumber>
					<UDN>uuid:9f0865b3-f5da-4ad5-85b7-7404637fdf37</UDN>
					<UPC>00000-00001</UPC>
					<serviceList>
						<service>
						<serviceType>urn:schemas-upnp-org:service:WANIPConnection:1</serviceType>
						<serviceId>urn:upnp-org:serviceId:WANIPConn1</serviceId>
						<controlURL>/ipc</controlURL>
						<eventSubURL>/ipc</eventSubURL>
						<SCPDURL>/ipc.xml</SCPDURL>
						</service>
					</serviceList>
				</device>
			</deviceList>
		</device>
<!-- WFAWC goes here -->
		<device>
			<deviceType>urn:schemas-wifialliance-org:device:WFADevice:1</deviceType>
			<presentationURL>http://192.168.0.1:80/      </presentationURL>
			<friendlyName>Wireless Router TL-WR841N</friendlyName>
       			<manufacturer>TP-LINK</manufacturer>
                         			<manufacturerURL>http://www.tp-link.com</manufacturerURL>
          			<modelDescription>Wireless Router TL-WR841N</modelDescription>
       			<modelName>TL-WR841N</modelName>
                       			<modelNumber>8.0</modelNumber>
                             			<modelURL>http://192.168.0.1:80</modelURL>
        		<serialNumber>none</serialNumber>
			<UDN>uuid:565aa949-67c1-4c0e-aa8f-f349e6f59311</UDN>
			<UPC>00000-00001</UPC>
			<serviceList>
				<service>
					<serviceType>urn:schemas-wifialliance-org:service:WFAWLANConfig:1</serviceType>
					<serviceId>urn:wifialliance-org:serviceId:WFAWLANConfig1</serviceId>
					<controlURL>http://192.168.0.1:1910/WFAWLANConfig/control</controlURL>
     					<eventSubURL>http://192.168.0.1:1910/WFAWLANConfig/event</eventSubURL>
     					<SCPDURL>http://192.168.0.1:1900/wfc.xml</SCPDURL>
     				</service>
			</serviceList>
		</device>
<!-- WFAWC ends here -->
	</deviceList>
</device>
</root>

2013-04-07 23:15:53,317 [devices.UPNPRootDevice:?] DEBUG - parsing device urn:schemas-upnp-org:device:InternetGatewayDevice:1
2013-04-07 23:15:53,323 [devices.UPNPRootDevice:?] DEBUG - device services count is 1.0
2013-04-07 23:15:53,326 [devices.UPNPRootDevice:?] DEBUG - child devices count is 2.0
2013-04-07 23:15:53,326 [devices.UPNPRootDevice:?] DEBUG - parsing device urn:schemas-upnp-org:device:WANDevice:1
2013-04-07 23:15:53,327 [devices.UPNPRootDevice:?] DEBUG - device services count is 1.0
2013-04-07 23:15:53,328 [devices.UPNPRootDevice:?] DEBUG - child devices count is 1.0
2013-04-07 23:15:53,328 [devices.UPNPRootDevice:?] DEBUG - parsing device urn:schemas-upnp-org:device:WANConnectionDevice:1
2013-04-07 23:15:53,329 [devices.UPNPRootDevice:?] DEBUG - device services count is 1.0
2013-04-07 23:15:53,330 [devices.UPNPRootDevice:?] DEBUG - adding child device urn:schemas-upnp-org:device:WANConnectionDevice:1
2013-04-07 23:15:53,330 [devices.UPNPRootDevice:?] DEBUG - adding child device urn:schemas-upnp-org:device:WANDevice:1
2013-04-07 23:15:53,331 [devices.UPNPRootDevice:?] DEBUG - parsing device urn:schemas-wifialliance-org:device:WFADevice:1
2013-04-07 23:15:53,332 [devices.UPNPRootDevice:?] DEBUG - device services count is 1.0
2013-04-07 23:15:53,333 [devices.UPNPRootDevice:?] DEBUG - adding child device urn:schemas-wifialliance-org:device:WFADevice:1
2013-04-07 23:15:55,727 [devices.UPNPDevice:?] DEBUG - searching for device URI:urn:schemas-upnp-org:device:WANConnectionDevice:1
2013-04-07 23:15:55,728 [devices.UPNPDevice:?] DEBUG - searching for device URI:urn:schemas-upnp-org:device:WANConnectionDevice:1
2013-04-07 23:15:55,728 [devices.UPNPDevice:?] DEBUG - searching for device URI:urn:schemas-upnp-org:device:WANConnectionDevice:1
2013-04-07 23:15:55,729 [devices.UPNPDevice:?] DEBUG - searching for service URI:urn:schemas-upnp-org:service:WANIPConnection:1
2013-04-07 23:15:55,729 [devices.UPNPDevice:?] DEBUG - searching for service URI:urn:schemas-upnp-org:service:WANPPPConnection:1
2013-04-07 23:15:55,810 [upnp.JXPathParser:?] DEBUG - Raw xml doc:
<?xml version="1.0"?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>SetConnectionType</name>
<argumentList>
<argument>
<name>NewConnectionType</name>
<direction>in</direction>
<relatedStateVariable>ConnectionType</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetConnectionTypeInfo</name>
<argumentList>
<argument>
<name>NewConnectionType</name>
<direction>out</direction>
<relatedStateVariable>ConnectionType</relatedStateVariable>
</argument>
<argument>
<name>NewPossibleConnectionTypes</name>
<direction>out</direction>
<relatedStateVariable>PossibleConnectionTypes</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>RequestConnection</name>
</action>
<action>
<name>ForceTermination</name>
</action>
<action>
<name>GetStatusInfo</name>
<argumentList>
<argument>
<name>NewConnectionStatus</name>
<direction>out</direction>
<relatedStateVariable>ConnectionStatus</relatedStateVariable>
</argument>
<argument>
<name>NewLastConnectionError</name>
<direction>out</direction>
<relatedStateVariable>LastConnectionError</relatedStateVariable>
</argument>
<argument>
<name>NewUptime</name>
<direction>out</direction>
<relatedStateVariable>Uptime</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetNATRSIPStatus</name>
<argumentList>
<argument>
<name>NewRSIPAvailable</name>
<direction>out</direction>
<relatedStateVariable>RSIPAvailable</relatedStateVariable>
</argument>
<argument>
<name>NewNATEnabled</name>
<direction>out</direction>
<relatedStateVariable>NATEnabled</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetGenericPortMappingEntry</name>
<argumentList>
<argument>
<name>NewPortMappingIndex</name>
<direction>in</direction>
<relatedStateVariable>PortMappingNumberOfEntries</relatedStateVariable>
</argument>
<argument>
<name>NewRemoteHost</name>
<direction>out</direction>
<relatedStateVariable>RemoteHost</relatedStateVariable>
</argument>
<argument>
<name>NewExternalPort</name>
<direction>out</direction>
<relatedStateVariable>ExternalPort</relatedStateVariable>
</argument>
<argument>
<name>NewProtocol</name>
<direction>out</direction>
<relatedStateVariable>PortMappingProtocol</relatedStateVariable>
</argument>
<argument>
<name>NewInternalPort</name>
<direction>out</direction>
<relatedStateVariable>InternalPort</relatedStateVariable>
</argument>
<argument>
<name>NewInternalClient</name>
<direction>out</direction>
<relatedStateVariable>InternalClient</relatedStateVariable>
</argument>
<argument>
<name>NewEnabled</name>
<direction>out</direction>
<relatedStateVariable>PortMappingEnabled</relatedStateVariable>
</argument>
<argument>
<name>NewPortMappingDescription</name>
<direction>out</direction>
<relatedStateVariable>PortMappingDescription</relatedStateVariable>
</argument>
<argument>
<name>NewLeaseDuration</name>
<direction>out</direction>
<relatedStateVariable>PortMappingLeaseDuration</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetSpecificPortMappingEntry</name>
<argumentList>
<argument>
<name>NewRemoteHost</name>
<direction>in</direction>
<relatedStateVariable>RemoteHost</relatedStateVariable>
</argument>
<argument>
<name>NewExternalPort</name>
<direction>in</direction>
<relatedStateVariable>ExternalPort</relatedStateVariable>
</argument>
<argument>
<name>NewProtocol</name>
<direction>in</direction>
<relatedStateVariable>PortMappingProtocol</relatedStateVariable>
</argument>
<argument>
<name>NewInternalPort</name>
<direction>out</direction>
<relatedStateVariable>InternalPort</relatedStateVariable>
</argument>
<argument>
<name>NewInternalClient</name>
<direction>out</direction>
<relatedStateVariable>InternalClient</relatedStateVariable>
</argument>
<argument>
<name>NewEnabled</name>
<direction>out</direction>
<relatedStateVariable>PortMappingEnabled</relatedStateVariable>
</argument>
<argument>
<name>NewPortMappingDescription</name>
<direction>out</direction>
<relatedStateVariable>PortMappingDescription</relatedStateVariable>
</argument>
<argument>
<name>NewLeaseDuration</name>
<direction>out</direction>
<relatedStateVariable>PortMappingLeaseDuration</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>AddPortMapping</name>
<argumentList>
<argument>
<name>NewRemoteHost</name>
<direction>in</direction>
<relatedStateVariable>RemoteHost</relatedStateVariable>
</argument>
<argument>
<name>NewExternalPort</name>
<direction>in</direction>
<relatedStateVariable>ExternalPort</relatedStateVariable>
</argument>
<argument>
<name>NewProtocol</name>
<direction>in</direction>
<relatedStateVariable>PortMappingProtocol</relatedStateVariable>
</argument>
<argument>
<name>NewInternalPort</name>
<direction>in</direction>
<relatedStateVariable>InternalPort</relatedStateVariable>
</argument>
<argument>
<name>NewInternalClient</name>
<direction>in</direction>
<relatedStateVariable>InternalClient</relatedStateVariable>
</argument>
<argument>
<name>NewEnabled</name>
<direction>in</direction>
<relatedStateVariable>PortMappingEnabled</relatedStateVariable>
</argument>
<argument>
<name>NewPortMappingDescription</name>
<direction>in</direction>
<relatedStateVariable>PortMappingDescription</relatedStateVariable>
</argument>
<argument>
<name>NewLeaseDuration</name>
<direction>in</direction>
<relatedStateVariable>PortMappingLeaseDuration</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>DeletePortMapping</name>
<argumentList>
<argument>
<name>NewRemoteHost</name>
<direction>in</direction>
<relatedStateVariable>RemoteHost</relatedStateVariable>
</argument>
<argument>
<name>NewExternalPort</name>
<direction>in</direction>
<relatedStateVariable>ExternalPort</relatedStateVariable>
</argument>
<argument>
<name>NewProtocol</name>
<direction>in</direction>
<relatedStateVariable>PortMappingProtocol</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetExternalIPAddress</name>
<argumentList>
<argument>
<name>NewExternalIPAddress</name>
<direction>out</direction>
<relatedStateVariable>ExternalIPAddress</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>ConnectionType</name>
<dataType>string</dataType>
<defaultValue>Unconfigured</defaultValue>
</stateVariable>
<stateVariable sendEvents="yes">
<name>PossibleConnectionTypes</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>Unconfigured</allowedValue>
<allowedValue>IP_Routed</allowedValue>
<allowedValue>IP_Bridged</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="yes">
<name>ConnectionStatus</name>
<dataType>string</dataType>
<defaultValue>Unconfigured</defaultValue>
<allowedValueList>
<allowedValue>Unconfigured</allowedValue>
<allowedValue>Connecting</allowedValue>
<allowedValue>Authenticating</allowedValue>
<allowedValue>PendingDisconnect</allowedValue>
<allowedValue>Disconnecting</allowedValue>
<allowedValue>Disconnected</allowedValue>
<allowedValue>Connected</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>Uptime</name>
<dataType>ui4</dataType>
<defaultValue>0</defaultValue>
<allowedValueRange>
<minimum>0</minimum>
<maximum />
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable sendEvents="no">
<name>RSIPAvailable</name>
<dataType>boolean</dataType>
<defaultValue>0</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>NATEnabled</name>
<dataType>boolean</dataType>
<defaultValue>1</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>LastConnectionError</name>
<dataType>string</dataType>
<defaultValue>ERROR_NONE</defaultValue>
<allowedValueList>
<allowedValue>ERROR_NONE</allowedValue>
<allowedValue>ERROR_ISP_TIME_OUT</allowedValue>
<allowedValue>ERROR_COMMAND_ABORTED</allowedValue>
<allowedValue>ERROR_NOT_ENABLED_FOR_INTERNET</allowedValue>
<allowedValue>ERROR_BAD_PHONE_NUMBER</allowedValue>
<allowedValue>ERROR_USER_DISCONNECT</allowedValue>
<allowedValue>ERROR_ISP_DISCONNECT</allowedValue>
<allowedValue>ERROR_IDLE_DISCONNECT</allowedValue>
<allowedValue>ERROR_FORCED_DISCONNECT</allowedValue>
<allowedValue>ERROR_SERVER_OUT_OF_RESOURCES</allowedValue>
<allowedValue>ERROR_RESTRICTED_LOGON_HOURS</allowedValue>
<allowedValue>ERROR_ACCOUNT_DISABLED</allowedValue>
<allowedValue>ERROR_ACCOUNT_EXPIRED</allowedValue>
<allowedValue>ERROR_PASSWORD_EXPIRED</allowedValue>
<allowedValue>ERROR_AUTHENTICATION_FAILURE</allowedValue>
<allowedValue>ERROR_NO_DIALTONE</allowedValue>
<allowedValue>ERROR_NO_CARRIER</allowedValue>
<allowedValue>ERROR_NO_ANSWER</allowedValue>
<allowedValue>ERROR_LINE_BUSY</allowedValue>
<allowedValue>ERROR_UNSUPPORTED_BITSPERSECOND</allowedValue>
<allowedValue>ERROR_TOO_MANY_LINE_ERRORS</allowedValue>
<allowedValue>ERROR_IP_CONFIGURATION</allowedValue>
<allowedValue>ERROR_UNKNOWN</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="yes">
<name>ExternalIPAddress</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RemoteHost</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>ExternalPort</name>
<dataType>ui2</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>InternalPort</name>
<dataType>ui2</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>PortMappingProtocol</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>TCP</allowedValue>
<allowedValue>UDP</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>InternalClient</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>PortMappingDescription</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>PortMappingEnabled</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>PortMappingLeaseDuration</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>PortMappingNumberOfEntries</name>
<dataType>ui2</dataType>
</stateVariable>
</serviceStateTable>
</scpd>

2013-04-07 23:15:55,860 [messages.ActionMessage:?] DEBUG - POST prepared for URL http://192.168.0.1:1900/ipc
2013-04-07 23:15:55,862 [messages.ActionMessage:?] DEBUG - executing query :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:AddPortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>51515</NewExternalPort><NewProtocol>TCP</NewProtocol><NewInternalPort>51515</NewInternalPort><NewInternalClient>192.168.0.30</NewInternalClient><NewEnabled>1</NewEnabled><NewPortMappingDescription>MapTool</NewPortMappingDescription><NewLeaseDuration>0</NewLeaseDuration></u:AddPortMapping></s:Body></s:Envelope>
2013-04-07 23:15:56,207 [messages.ActionMessage:?] DEBUG - received response :
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<u:AddPortMappingResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"></u:AddPortMappingResponse></SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2013-04-07 23:16:01,967 [messages.ActionMessage:?] DEBUG - POST prepared for URL http://192.168.0.1:1900/ipc
2013-04-07 23:16:01,969 [messages.ActionMessage:?] DEBUG - executing query :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetSpecificPortMappingEntry xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>51515</NewExternalPort><NewProtocol>TCP</NewProtocol></u:GetSpecificPortMappingEntry></s:Body></s:Envelope>
2013-04-07 23:16:01,972 [messages.ActionMessage:?] DEBUG - received response :
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<u:GetSpecificPortMappingEntryResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewInternalPort>51515</NewInternalPort><NewInternalClient>192.168.0.30</NewInternalClient><NewEnabled>1</NewEnabled><NewPortMappingDescription>MapTool</NewPortMappingDescription><NewLeaseDuration>0</NewLeaseDuration></u:GetSpecificPortMappingEntryResponse></SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2013-04-07 23:16:01,975 [messages.ActionMessage:?] DEBUG - POST prepared for URL http://192.168.0.1:1900/ipc
2013-04-07 23:16:01,976 [messages.ActionMessage:?] DEBUG - executing query :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:DeletePortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>51515</NewExternalPort><NewProtocol>TCP</NewProtocol></u:DeletePortMapping></s:Body></s:Envelope>
2013-04-07 23:16:02,264 [messages.ActionMessage:?] DEBUG - received response :
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<u:DeletePortMappingResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"></u:DeletePortMappingResponse></SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2013-04-07 23:16:02,267 [messages.ActionMessage:?] DEBUG - POST prepared for URL http://192.168.0.1:1900/ipc
2013-04-07 23:16:02,269 [messages.ActionMessage:?] DEBUG - POST prepared for URL http://192.168.0.1:1900/ipc
2013-04-07 23:16:02,269 [messages.ActionMessage:?] DEBUG - executing query :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetSpecificPortMappingEntry xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>51515</NewExternalPort><NewProtocol>TCP</NewProtocol></u:GetSpecificPortMappingEntry></s:Body></s:Envelope>
2013-04-07 23:16:02,271 [messages.ActionMessage:?] DEBUG - executing query :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetSpecificPortMappingEntry xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>51515</NewExternalPort><NewProtocol>TCP</NewProtocol></u:GetSpecificPortMappingEntry></s:Body></s:Envelope>
2013-04-07 23:16:02,275 [messages.ActionMessage:?] DEBUG - received response :
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>402</errorCode>
<errorDescription>Invalid ExternalPort</errorDescription>
</UPnPError>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2013-04-07 23:16:02,275 [messages.ActionMessage:?] DEBUG - received response :
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>402</errorCode>
<errorDescription>Invalid ExternalPort</errorDescription>
</UPnPError>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2013-04-07 23:16:02,278 [util.UPnPUtil:116] WARN - While closing UPnP port
net.sbbi.upnp.messages.UPNPResponseException: Detailed error code :402, Detailed error description :Invalid ExternalPort
	at net.sbbi.upnp.messages.ActionMessageResponseParser.startElement(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:302)
	at net.sbbi.upnp.messages.ActionMessage.service(Unknown Source)
	at net.sbbi.upnp.impls.InternetGatewayDevice.getSpecificPortMappingEntry(Unknown Source)
	at net.rptools.maptool.util.UPnPUtil.closePort(UPnPUtil.java:101)
	at net.rptools.maptool.client.MapTool.disconnect(MapTool.java:1021)
	at net.rptools.maptool.client.ServerDisconnectHandler.handleDisconnect(ServerDisconnectHandler.java:28)
	at net.rptools.clientserver.simple.AbstractConnection.fireDisconnect(AbstractConnection.java:108)
	at net.rptools.clientserver.simple.client.ClientConnection$ReceiveThread.run(ClientConnection.java:183)
2013-04-07 23:16:02,278 [util.UPnPUtil:116] WARN - While closing UPnP port
net.sbbi.upnp.messages.UPNPResponseException: Detailed error code :402, Detailed error description :Invalid ExternalPort
	at net.sbbi.upnp.messages.ActionMessageResponseParser.startElement(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:302)
	at net.sbbi.upnp.messages.ActionMessage.service(Unknown Source)
	at net.sbbi.upnp.impls.InternetGatewayDevice.getSpecificPortMappingEntry(Unknown Source)
	at net.rptools.maptool.util.UPnPUtil.closePort(UPnPUtil.java:101)
	at net.rptools.maptool.client.MapTool.disconnect(MapTool.java:1021)
	at net.rptools.maptool.client.AppActions.disconnectFromServer(AppActions.java:1953)
	at net.rptools.maptool.client.AppActions$53.execute(AppActions.java:1945)
	at net.rptools.maptool.client.AppActions$ClientAction.actionPerformed(AppActions.java:2697)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at com.apple.laf.ScreenMenuItem.actionPerformed(ScreenMenuItem.java:128)
	at java.awt.MenuItem.processActionEvent(MenuItem.java:669)
	at java.awt.MenuItem.processEvent(MenuItem.java:628)
	at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:351)
	at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:339)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:732)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:688)
	at java.awt.EventQueue$3.run(EventQueue.java:686)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:702)
	at java.awt.EventQueue$4.run(EventQueue.java:700)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
	at net.rptools.maptool.client.swing.MapToolEventQueue.dispatchEvent(MapToolEventQueue.java:38)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
2013-04-07 23:16:08,278 [messages.ActionMessage:?] DEBUG - POST prepared for URL http://192.168.0.1:1900/ipc
2013-04-07 23:16:08,281 [messages.ActionMessage:?] DEBUG - executing query :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetSpecificPortMappingEntry xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>51515</NewExternalPort><NewProtocol>TCP</NewProtocol></u:GetSpecificPortMappingEntry></s:Body></s:Envelope>
2013-04-07 23:16:08,283 [messages.ActionMessage:?] DEBUG - received response :
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>402</errorCode>
<errorDescription>Invalid ExternalPort</errorDescription>
</UPnPError>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2013-04-07 23:16:08,285 [util.UPnPUtil:116] WARN - While closing UPnP port
net.sbbi.upnp.messages.UPNPResponseException: Detailed error code :402, Detailed error description :Invalid ExternalPort
	at net.sbbi.upnp.messages.ActionMessageResponseParser.startElement(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:302)
	at net.sbbi.upnp.messages.ActionMessage.service(Unknown Source)
	at net.sbbi.upnp.impls.InternetGatewayDevice.getSpecificPortMappingEntry(Unknown Source)
	at net.rptools.maptool.util.UPnPUtil.closePort(UPnPUtil.java:101)
	at net.rptools.maptool.client.MapTool.disconnect(MapTool.java:1021)
	at net.rptools.maptool.client.ui.MapToolFrame.close(MapToolFrame.java:1334)
	at net.rptools.maptool.client.ui.MapToolFrame.closingMaintenance(MapToolFrame.java:1329)
	at net.rptools.maptool.client.AppActions$66.execute(AppActions.java:2578)
	at net.rptools.maptool.client.ui.MapToolFrame.macOSXExit(MapToolFrame.java:406)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at net.rptools.maptool.client.ui.OSXAdapter.callTarget(OSXAdapter.java:154)
	at net.rptools.maptool.client.ui.OSXAdapter.invoke(OSXAdapter.java:165)
	at com.sun.proxy.$Proxy5.handleQuit(Unknown Source)
	at com.apple.eawt._AppEventLegacyHandler$7.dispatchEvent(_AppEventLegacyHandler.java:166)
	at com.apple.eawt._AppEventLegacyHandler.sendEventToEachListenerUntilHandled(_AppEventLegacyHandler.java:188)
	at com.apple.eawt._AppEventLegacyHandler.handleQuitRequestWith(_AppEventLegacyHandler.java:164)
	at com.apple.eawt._AppEventHandler$_QuitDispatcher.performUsing(_AppEventHandler.java:395)
	at com.apple.eawt._AppEventHandler$_QuitDispatcher.performUsing(_AppEventHandler.java:388)
	at com.apple.eawt._AppEventHandler$_AppEventDispatcher$1.run(_AppEventHandler.java:497)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:688)
	at java.awt.EventQueue$3.run(EventQueue.java:686)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
	at net.rptools.maptool.client.swing.MapToolEventQueue.dispatchEvent(MapToolEventQueue.java:38)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
2013-04-07 23:16:08,287 [messages.ActionMessage:?] DEBUG - POST prepared for URL http://192.168.0.1:1900/ipc
2013-04-07 23:16:08,289 [messages.ActionMessage:?] DEBUG - executing query :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetSpecificPortMappingEntry xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>51515</NewExternalPort><NewProtocol>TCP</NewProtocol></u:GetSpecificPortMappingEntry></s:Body></s:Envelope>
2013-04-07 23:16:08,292 [messages.ActionMessage:?] DEBUG - received response :
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>402</errorCode>
<errorDescription>Invalid ExternalPort</errorDescription>
</UPnPError>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2013-04-07 23:16:08,295 [util.UPnPUtil:116] WARN - While closing UPnP port
net.sbbi.upnp.messages.UPNPResponseException: Detailed error code :402, Detailed error description :Invalid ExternalPort
	at net.sbbi.upnp.messages.ActionMessageResponseParser.startElement(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:302)
	at net.sbbi.upnp.messages.ActionMessage.service(Unknown Source)
	at net.sbbi.upnp.impls.InternetGatewayDevice.getSpecificPortMappingEntry(Unknown Source)
	at net.rptools.maptool.util.UPnPUtil.closePort(UPnPUtil.java:101)
	at net.rptools.maptool.client.MapTool.disconnect(MapTool.java:1021)
	at net.rptools.maptool.client.ServerDisconnectHandler.handleDisconnect(ServerDisconnectHandler.java:28)
	at net.rptools.clientserver.simple.AbstractConnection.fireDisconnect(AbstractConnection.java:108)
	at net.rptools.clientserver.simple.client.ClientConnection$ReceiveThread.run(ClientConnection.java:183)
Last edited by Azhrei on Mon Apr 08, 2013 6:55 pm, edited 1 time in total.
Reason: fixed namespace comment re: prefixes

User avatar
Azhrei
Site Admin
Posts: 12086
Joined: Mon Jun 12, 2006 1:20 pm
Location: Tampa, FL

Re: Replacement JAR for b89 for UPNP testing

Post by Azhrei »

(reserved)

User avatar
CoveredInFish
Demigod
Posts: 3104
Joined: Mon Jun 29, 2009 10:37 am
Location: Germany
Contact:

Re: Replacement JAR for b89 for UPNP testing

Post by CoveredInFish »

I tried to follow your instructions, but when I check upnp it doesnt the server - there is no error msg either.
Any chance you've forgotten a step? Is it okay that I delete 2 files but replace only 1?

EDIT: funny, apparently it throws an upnp-related error when I try to quit MT
crash dump
java.lang.UnsupportedClassVersionError: net/sbbi/upnp/messages/UPNPResponseException : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at net.rptools.maptool.client.MapTool.disconnect(MapTool.java:1021)
at net.rptools.maptool.client.ui.MapToolFrame.close(MapToolFrame.java:1334)
at net.rptools.maptool.client.ui.MapToolFrame.closingMaintenance(MapToolFrame.java:1329)
at net.rptools.maptool.client.ui.MapToolFrame.windowClosing(MapToolFrame.java:1288)
at java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:333)
at java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:332)
at java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:332)
at java.awt.Window.processWindowEvent(Window.java:1871)
at javax.swing.JFrame.processWindowEvent(JFrame.java:274)
at java.awt.Window.processEvent(Window.java:1829)
at java.awt.Component.dispatchEventImpl(Component.java:4744)
at java.awt.Container.dispatchEventImpl(Container.java:2141)
at java.awt.Window.dispatchEventImpl(Window.java:2489)
at java.awt.Component.dispatchEvent(Component.java:4572)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:710)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:669)
at java.awt.EventQueue$2.run(EventQueue.java:667)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:683)
at java.awt.EventQueue$3.run(EventQueue.java:681)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:680)
at net.rptools.maptool.client.swing.MapToolEventQueue.dispatchEvent(MapToolEventQueue.java:38)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

User avatar
wolph42
Winter Wolph
Posts: 9999
Joined: Fri Mar 20, 2009 5:40 am
Location: Netherlands
Contact:

Re: Replacement JAR for b89 for UPNP testing

Post by wolph42 »

I've had that crash dump as well, after I tried Lee's suggestion to test the upnp (not the above, need to do that still), which also involved replacing the .jar files.

User avatar
jfrazierjr
Deity
Posts: 5176
Joined: Tue Sep 11, 2007 7:31 pm

Re: Replacement JAR for b89 for UPNP testing

Post by jfrazierjr »

Azhrei wrote: In addition, this router is not using XML namespaces, which may be why it's working. The previous failures in the UPNP library were in regards to XML namespace support...

Code: Select all

<root xmlns="urn:schemas-upnp-org:device-1-0">
[/quote]


[spoiler=Stuff that's not germane in any way to this working or not]Technically, it IS using XML namespaces, it's just not using namespace prefixes(and hence the namespace declaration as presented here without a namespace prefix works by putting the entire contents of the message into the "urn:schemas-upnp-org:device-1-0" namespace).   Now... if everything works correctly in the XML parser libraries being used, the code should see zero difference between the two(and that's a big "if" unfortunately as many get this crap wrong all the time!)[/spoiler]
I save all my Campaign Files to DropBox. Not only can I access a campaign file from pretty much any OS that will run Maptool(Win,OSX, linux), but each file is versioned, so if something goes crazy wild, I can always roll back to a previous version of the same file.

Get your Dropbox 2GB via my referral link, and as a bonus, I get an extra 250 MB of space. Even if you don't don't use my link, I still enthusiastically recommend Dropbox..

User avatar
JamzTheMan
Great Wyrm
Posts: 1872
Joined: Mon May 10, 2010 12:59 pm
Location: Chicagoland
Contact:

Re: Replacement JAR for b89 for UPNP testing

Post by JamzTheMan »

Az, here's my log file from a working system if it helps.
Attachments
log.txt
(27.63 KiB) Downloaded 104 times
-Jamz
____________________
Custom MapTool 1.4.x.x Fork: maptool.nerps.net
Custom TokenTool 2.0 Fork: tokentool.nerps.net
More information here: MapTool Nerps! Fork

User avatar
Azhrei
Site Admin
Posts: 12086
Joined: Mon Jun 12, 2006 1:20 pm
Location: Tampa, FL

Re: Replacement JAR for b89 for UPNP testing

Post by Azhrei »

CoveredInFish wrote:I tried to follow your instructions, but when I check upnp it doesnt the server - there is no error msg either.
Any chance you've forgotten a step? Is it okay that I delete 2 files but replace only 1?
Yes, that's correct. You don't need both the "debug" and "nodebug" versions anyway. The next build will only include one.
EDIT: funny, apparently it throws an upnp-related error when I try to quit MT
Oops. I probably built that using the Java 7 compiler and you tested it with Java 6. I'll build a new JAR and upload it in a moment. Thanks.

Not sure why you didn't get the error until you went to exit MT, though. It should've happened as soon as MT needed the UPNP library...
jfrazierjr wrote:

Code: Select all

<root xmlns="urn:schemas-upnp-org:device-1-0">
Technically, it IS using XML namespaces, it's just not using namespace prefixes
You're right. I misspoke. I'll go back and edit my post so that it's correct! Thanks.
JamzTheMan wrote:Az, here's my log file from a working system if it helps.
Yes! Every log report helps, whether it worked or not! In addition to identifying what fails, I need to identify what DOESN'T fail too!

User avatar
CoveredInFish
Demigod
Posts: 3104
Joined: Mon Jun 29, 2009 10:37 am
Location: Germany
Contact:

Re: Replacement JAR for b89 for UPNP testing

Post by CoveredInFish »

I think I'm too stupid to set up my network correcty, it tells me I havent a upnp device but I think I should have :oops:

Well, at least here is a log.
Attachments
cifs-log.zip
(1.56 KiB) Downloaded 118 times

User avatar
jfrazierjr
Deity
Posts: 5176
Joined: Tue Sep 11, 2007 7:31 pm

Re: Replacement JAR for b89 for UPNP testing

Post by jfrazierjr »

CoveredInFish wrote:I think I'm too stupid to set up my network correcty, it tells me I havent a upnp device but I think I should have :oops:

Well, at least here is a log.
My quick guess here is that the code in fillUPNPDeviceIconsList is wrong. The error points to getting an xpath for upnp:icon[1]. My guess is that it's pulling back a list of nodes and while xpath indexes based on 1..n, java indexes based on 0..n. I would have to see the code to verify, but that's my quick guess based on the error in the log file and my knowledge of xml/xpath & java.
I save all my Campaign Files to DropBox. Not only can I access a campaign file from pretty much any OS that will run Maptool(Win,OSX, linux), but each file is versioned, so if something goes crazy wild, I can always roll back to a previous version of the same file.

Get your Dropbox 2GB via my referral link, and as a bonus, I get an extra 250 MB of space. Even if you don't don't use my link, I still enthusiastically recommend Dropbox..

User avatar
jfrazierjr
Deity
Posts: 5176
Joined: Tue Sep 11, 2007 7:31 pm

Re: Replacement JAR for b89 for UPNP testing

Post by jfrazierjr »

Just an FYI, of the two posted logs that DO seem to work, neither of them had the iconList element while the one that FAILED did AND this area in the XML is where the failure is recorded.
I save all my Campaign Files to DropBox. Not only can I access a campaign file from pretty much any OS that will run Maptool(Win,OSX, linux), but each file is versioned, so if something goes crazy wild, I can always roll back to a previous version of the same file.

Get your Dropbox 2GB via my referral link, and as a bonus, I get an extra 250 MB of space. Even if you don't don't use my link, I still enthusiastically recommend Dropbox..

User avatar
wolph42
Winter Wolph
Posts: 9999
Joined: Fri Mar 20, 2009 5:40 am
Location: Netherlands
Contact:

Re: Replacement JAR for b89 for UPNP testing

Post by wolph42 »

And here is my attempt. It failed on my pc, where the DEV version of Lee *does* work. So I know its possible and that the system is setup correctly it just does not work with b89.

I also tried lees dev version again (which still works and connects nicely) and checked the log, but nothing there...

User avatar
jfrazierjr
Deity
Posts: 5176
Joined: Tue Sep 11, 2007 7:31 pm

Re: Replacement JAR for b89 for UPNP testing

Post by jfrazierjr »

wolph42 wrote:And here is my attempt. It failed on my pc, where the DEV version of Lee *does* work. So I know its possible and that the system is setup correctly it just does not work with b89.

I also tried lees dev version again (which still works and connects nicely) and checked the log, but nothing there...
And both of those boxes that fail are Fritz(you and CiF) brand machines. And both fail on the iconList section. My guess is that this section of code is wrong and it only manifest with routers that expose that information(where as the two that do NOT fail did NOT return an iconList element in the XML...)
I save all my Campaign Files to DropBox. Not only can I access a campaign file from pretty much any OS that will run Maptool(Win,OSX, linux), but each file is versioned, so if something goes crazy wild, I can always roll back to a previous version of the same file.

Get your Dropbox 2GB via my referral link, and as a bonus, I get an extra 250 MB of space. Even if you don't don't use my link, I still enthusiastically recommend Dropbox..

User avatar
Azhrei
Site Admin
Posts: 12086
Joined: Mon Jun 12, 2006 1:20 pm
Location: Tampa, FL

Re: Replacement JAR for b89 for UPNP testing

Post by Azhrei »

Thanks, wolph.
wolph42 wrote:I also tried lees dev version again (which still works and connects nicely) and checked the log, but nothing there...
And did you put this upnp JAR file into Lee's dev version? If you use the instructions in the OP on Lee's dev version, and put the logging.xml into place, then his dev version should produce the same logging output.
jfrazierjr wrote:And both of those boxes that fail are Fritz(you and CiF) brand machines. And both fail on the iconList section. My guess is that this section of code is wrong and it only manifest with routers that expose that information(where as the two that do NOT fail did NOT return an iconList element in the XML...)
I also checked the official UPNP XML schema. It does not include the iconList element (or subelements, of course) which means the router is not adhering to the spec.

I don't understand why the 1.0.4 JAR would be more lenient than 1.0.5, when the only changes should have been to the XML namespace support, but there could be a subtle interaction with the latest Apache JXPath library (and its dependencies). Hopefully wolph will be able to produce a log from the dev version and we can see the differences.

In the mean time, I'll see if the 1.0.5 version of the library has some way to skip unrecognized elements...

User avatar
wolph42
Winter Wolph
Posts: 9999
Joined: Fri Mar 20, 2009 5:40 am
Location: Netherlands
Contact:

Re: Replacement JAR for b89 for UPNP testing

Post by wolph42 »

Azhrei wrote:Thanks, wolph.
wolph42 wrote:I also tried lees dev version again (which still works and connects nicely) and checked the log, but nothing there...
And did you put this upnp JAR file into Lee's dev version? If you use the instructions in the OP on Lee's dev version, and put the logging.xml into place, then his dev version should produce the same logging output.
jfrazierjr wrote:And both of those boxes that fail are Fritz(you and CiF) brand machines. And both fail on the iconList section. My guess is that this section of code is wrong and it only manifest with routers that expose that information(where as the two that do NOT fail did NOT return an iconList element in the XML...)
I also checked the official UPNP XML schema. It does not include the iconList element (or subelements, of course) which means the router is not adhering to the spec.

I don't understand why the 1.0.4 JAR would be more lenient than 1.0.5, when the only changes should have been to the XML namespace support, but there could be a subtle interaction with the latest Apache JXPath library (and its dependencies). Hopefully wolph will be able to produce a log from the dev version and we can see the differences.

In the mean time, I'll see if the 1.0.5 version of the library has some way to skip unrecognized elements...
tried that. first dumped your jar straight in: no log. then i renamed it so 1.0.4 and removed the one from lee and:same error.

Post Reply

Return to “Testing”