From 8d4181dbc1a7c80d698603c83f61716d6022b121 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Thu, 26 May 2011 23:30:02 +0000 Subject: [PATCH] Handle valid-requests correctly. --- exec/load/cvslib.js | 53 ++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/exec/load/cvslib.js b/exec/load/cvslib.js index 5326bbf597..ec019f2c80 100644 --- a/exec/load/cvslib.js +++ b/exec/load/cvslib.js @@ -206,51 +206,56 @@ CVS = new (function () { if(!this.socket.poll(1)) return undefined; var response=this.socket.recvline(4096,10); - var space=response.indexOf(' '); - if(space < 1) + var cmd=response.split(' ', 2); + if(cmd.length < 2) return response; - var cmd=response.slice(0, space-1) - switch(cmd) { + switch(cmd[0]) { case 'M': - log(LOG_INFO, response.substr(space+1)); + log(LOG_INFO, cmd[1]); if(js.global.writeln) - writeln(response.substr(space+1)); + writeln(cmd[1]); break; case 'MT': - var m=response.split(' ',3); - switch(m[1]) { + var m=cmd[1].split(' ',2); + switch(m[0]) { case 'newline': if(js.global.writeln) writeln(''); break; case 'text': - log(LOG_INFO, m[2]); + log(LOG_INFO, m[1]); if(js.global.write) - write(m[2]); + write(m[1]); break; default: - if(m.length > 2) { - log(LOG_INFO, m[2]); + if(m.length > 1) { + log(LOG_INFO, m[1]); if(js.global.write) - write(m[2]); + write(m[1]); } break; } break; case 'E': - log(LOG_ERR, response.substr(space+1)); + log(LOG_ERR, m[1]); if(js.global.writeln) - writeln(response.substr(space+1)); + writeln(m[1]); break; case 'F': break; + case 'Valid-requests': + var m=cmd[1].split(' '); + for each(var r in m) { + this.validRequests[r] = true; + } + break; case 'error': - var m=response.split(' ',3); - if(m[1].length > 0) { - log(LOG_ERR, "ERROR "+m[1]+" - "+m[2]); + var m=cmd[1].split(' ',2); + if(m[0].length > 0) { + log(LOG_ERR, "ERROR "+m[0]+" - "+m[1]); } else { - log(LOG_ERR, "ERROR - "+m[2]); + log(LOG_ERR, "ERROR - "+m[1]); } return response; default: @@ -280,8 +285,6 @@ CVS = new (function () { /* if cvs has been passed as part of the command, strip it */ if(cmd[0].toUpperCase() == "CVS") cmd.shift(); - - } ////////////////////////////////// PROTOCOL API @@ -294,12 +297,12 @@ CVS = new (function () { /* request a list of valid server requests */ 'valid-requests':function() { this.parent.request('valid-requests'); - var requests=this.parent.response.split(" "); - for each(var r in requests) { - this.parent.validRequests[r] = true; + var request=this.parent.response; + if(request != 'ok') { + log(LOG_ERR, "Unhandled response: '"+request+"'"); } }, - + /* tell server what responses we can handle */ 'Valid-responses':function() { var str="Valid-responses"; -- GitLab