summaryrefslogtreecommitdiffstats
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/globals.c6
-rw-r--r--src/server/globals.h2
-rw-r--r--src/server/net.c20
3 files changed, 16 insertions, 12 deletions
diff --git a/src/server/globals.c b/src/server/globals.c
index 34941bf..37ee3d4 100644
--- a/src/server/globals.c
+++ b/src/server/globals.c
@@ -32,7 +32,7 @@ atomic_bool _vmdkLegacyMode = false;
atomic_bool _proxyPrivateOnly = false;
atomic_bool _pretendClient = false;
atomic_int _autoFreeDiskSpaceDelay = 3600 * 10;
-atomic_bool _iSCSIServer = true;
+atomic_bool _iScsiServer = true;
// [limits]
atomic_int _maxClients = SERVER_MAX_CLIENTS;
atomic_int _maxImages = SERVER_MAX_IMAGES;
@@ -94,7 +94,7 @@ static int ini_handler(void *custom UNUSED, const char* section, const char* key
SAVE_TO_VAR_UINT( limits, minRequestSize );
SAVE_TO_VAR_BOOL( dnbd3, pretendClient );
SAVE_TO_VAR_INT( dnbd3, autoFreeDiskSpaceDelay );
- SAVE_TO_VAR_BOOL( dnbd3, iSCSIServer );
+ SAVE_TO_VAR_BOOL( dnbd3, iScsiServer );
if ( strcmp( section, "dnbd3" ) == 0 && strcmp( key, "backgroundReplication" ) == 0 ) {
if ( strcmp( value, "hashblock" ) == 0 ) {
_backgroundReplication = BGR_HASHBLOCK;
@@ -366,7 +366,7 @@ size_t globals_dumpConfig(char *buffer, size_t size)
PBOOL(proxyPrivateOnly);
PBOOL(pretendClient);
PINT(autoFreeDiskSpaceDelay);
- PBOOL(iSCSIServer);
+ PBOOL(iScsiServer);
P_ARG("[limits]\n");
PINT(maxClients);
PINT(maxImages);
diff --git a/src/server/globals.h b/src/server/globals.h
index b51a81a..900b86d 100644
--- a/src/server/globals.h
+++ b/src/server/globals.h
@@ -337,7 +337,7 @@ extern atomic_int _autoFreeDiskSpaceDelay;
* Specifies if the iSCSI server should be initialized, enabled
* and used upon start of DNBD3 server.
*/
-extern atomic_bool _iSCSIServer;
+extern atomic_bool _iScsiServer;
/**
* When handling a client request, this sets the maximum amount
diff --git a/src/server/net.c b/src/server/net.c
index e94e549..4c04462 100644
--- a/src/server/net.c
+++ b/src/server/net.c
@@ -184,17 +184,21 @@ void* net_handleNewConnection(void *clientPtr)
if ( ((char*)&request)[0] == 'G' || ((char*)&request)[0] == 'P' ) {
// Close enough...
rpc_sendStatsJson( client->sock, &client->host, &request, ret );
- } else if ( true /* check opcode ... */ ) {
- initClientStruct( client );
- if ( !addToList( client ) ) {
- freeClientStruct( client );
- logadd( LOG_WARNING, "Could not add new iSCSI client to list when connecting" );
+ } else if ( ((char*)&request)[0] == 0x43 ) { // Login opcode 0x03 + immediate bit (0x40) set
+ if ( !_iScsiServer ) {
+ logadd( LOG_INFO, "Received iSCSI login request from %s, but iSCSI server is not enabled", client->hostName );
} else {
- iscsi_connection_handle( client, &request, ret );
- goto exit_client_cleanup;
+ initClientStruct( client );
+ if ( !addToList( client ) ) {
+ freeClientStruct( client );
+ logadd( LOG_WARNING, "Could not add new iSCSI client to list when connecting" );
+ } else {
+ iscsi_connection_handle( client, &request, ret );
+ goto exit_client_cleanup;
+ }
}
} else {
- logadd( LOG_DEBUG1, "Magic in client handshake incorrect" );
+ logadd( LOG_DEBUG1, "Magic in client handshake unknown" );
}
goto fail_preadd;
}