SCSP Compatibility and Support

This section lists major API-level features and changes in Swarm releases starting with version 4.0 to assist with writing client applications.

Determining the Swarm and SCSP Proxy Version

To determine which version of Swarm is running on a node, search for the Server header in any response by:

  • Using a web browser.

  • Sending a GET / request to the node using the node IP address or host name.

  • Sending a GET / request to the node using the SCSP Proxy's external IP address or host name.

Using a Browser

To search for the Server header using a web browser, use a browser with a head capture utility (such as Live HTTP Headers with Firefox) and enter the following URL in the Address field:

http://node-ip\[:scsp-port\]

where scsp-port is required only if using a value other than the default value of 80.

Using the Node IP Address or Host Name

Send a GET / request to the node using the node's IP address or host name as the Host in the request if a client application is on the same subnet as a Swarm node.

In this example, the responding node is running Swarm version 5.1.

HTTP/1.1 200 OK  Content-Type: text/html  Content-Length: 733  Cache-Control: no-cache  Expires: Thu, 03 Jun 2011 19:09:05 GMT  Age: 0  Allow: HEAD, GET, PUT, POST, COPY, APPEND, DELETE  Castor-System-TotalGBAvailable: 145  Castor-System-TotalGBCapacity: 156  Castor-System-Cluster: cluster.example.com  Etag: "8c2c582c216a1f088c3652bced5a5f91"  Date: Fri, 04 Mar 2011 22:55:45 GMT  Server: CAStor Cluster/5.1.0

Using the SCSP Proxy External IP Address or Host Name

Send a GET / request to the Swarm SCSP Proxy, using the SCSP Proxy's external IP address or host name as the Host in the request if a client application is not on the same subnet as a Swarm node.

In this example, the SCSP Proxy is running version 1.4 and Swarm is running version 6.0.

HTTP/1.1 200 OK  Scsp-Proxy-Cluster: cluster.example.com  Content-Type: text/plain  Content-Length: 0  Cache-Control: no-cache  Expires: Tue, 13 Sep 2011 11:06:36 GMT  Castor-System-TotalGBAvailable: 148567  Castor-System-TotalGBCapacity: 349123  Scsp-Proxy-Nodes: count=16  SCSP-Proxy-Agent: SCSP Proxy Service/1.4.0  Age: 0  Etag: "6a04a4fef71925b92ec12de887ac4653"  Via: 1.1 myhost.example.com (SCSP Proxy Service/1.4.0)  X-Forwarded-For: myhost.example.com  X-Forwarded-Server: myhost.example.com  Date: Wed, 14 Sep 2011 14:53:16 GMT  Server: CAStor Cluster/6.0.0

Issues with 100-Continue Header

Inconsistencies appear when the Swarm SDK is not integrated with the 100 Continue status header to implement the SCSP protocol.

Best Practice

Use the Swarm SDK, which includes full implementations of the SCSP protocol in multiple languages.

Consider the following inconsistencies with 100-Continue for integrators not using the SDK:

  • Python httplib. The Python httplib wrapper behavior is not altered in the presence of a 100-continue header and sends the complete request body without waiting for the continue response from the server. The Python SDK does not use httplib and does handle 100-continue headers correctly.

  • C#/.NET WebClient/HttpWebRequest. HTTPWebRequest behavior is not altered in the presence of a 100-continue header and sends the complete request body without waiting for the continue response from the server. Client applications are informed when encountering a 100-continue header.

  • Java Apache Commons HTTP client. The Apache commons HTTP client does handle 100-continue correctly after setting the POST method parameter:

See RFC 7231 section 6.2.1 for more about the 100 Continue status.

© DataCore Software Corporation. · https://www.datacore.com · All rights reserved.