db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tiago R. Espinha (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-4799) IllegalArgumentException when generating error message on server
Date Tue, 14 Sep 2010 09:48:33 GMT

    [ https://issues.apache.org/jira/browse/DERBY-4799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12909171#action_12909171

Tiago R. Espinha commented on DERBY-4799:

I think this is just the behavior on the server. If you look at NetConnectionRequest.buildRDBNAM(String,
boolean) you'll find this call:

(line 488)
netAgent_.getCurrentCcsidManager().convertFromJavaString(rdbnam, netAgent_);

Now, if we consider that up until now the only CCSID manager was of the type EbcdicCcsidManager,
then the client has always been encoding the RDBNAM in EBCDIC. It is only the server, when
it has to send the RDBNAM back to the client (it happens in certain occasions), that will
send it in UTF-8 as seen on the method you've changed.

I'm not sure this follows the specification and with my changes, rather than getting the length
like this, I was pulling it from the CCSID manager's getByteLength() method. I reckon the
override for this method requires some adjusting in the EBCDIC case, but I think this would
be more correct from a DRDA perspective.

> IllegalArgumentException when generating error message on server
> ----------------------------------------------------------------
>                 Key: DERBY-4799
>                 URL: https://issues.apache.org/jira/browse/DERBY-4799
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Server
>    Affects Versions:
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: fix.diff, test.diff
> If you for example try to connect to a non-existing database using the client driver,
and the name of the database has 18 characters or more, and at least one of the characters
in the database name is a non-ascii character, the server will throw an IllegalArgumentException
when trying to send the "database not found" message back to the client.
> Example:
> ij> connect 'jdbc:derby://localhost/abcdefghijklmnopqå';
> ERROR 08006: A network protocol error was encountered and the connection has been terminated:
A PROTOCOL Data Stream Syntax Error was detected.  Reason: 0x12. Plaintext connection attempt
to an SSL enabled server?
> Printed to the console by the server:
> Tue Sep 14 09:12:05 CEST 2010 : fromIndex(60) > toIndex(59)
> java.lang.IllegalArgumentException: fromIndex(60) > toIndex(59)
> 	at java.util.Arrays.rangeCheck(Arrays.java:1306)
> 	at java.util.Arrays.fill(Arrays.java:2567)
> 	at org.apache.derby.impl.drda.DDMWriter.padBytes(DDMWriter.java:1254)
> 	at org.apache.derby.impl.drda.DDMWriter.writeScalarPaddedBytes(DDMWriter.java:992)
> 	at org.apache.derby.impl.drda.DRDAConnThread.writeRDBNAM(DRDAConnThread.java:583)
> 	at org.apache.derby.impl.drda.DRDAConnThread.writeRDBfailure(DRDAConnThread.java:1248)
> 	at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1194)
> 	at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:968)
> 	at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:294)

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message