comparison cli-session.c @ 165:0cfba3034be5

Fixed DEBUG_TRACE macro so that we don't get semicolons left about the place
author Matt Johnston <matt@ucc.asn.au>
date Sun, 02 Jan 2005 20:25:56 +0000
parents fb7147e2fb04
children 2c5741e4b855
comparison
equal deleted inserted replaced
161:b9d3f725e00b 165:0cfba3034be5
137 137
138 /* This function drives the progress of the session - it initiates KEX, 138 /* This function drives the progress of the session - it initiates KEX,
139 * service, userauth and channel requests */ 139 * service, userauth and channel requests */
140 static void cli_sessionloop() { 140 static void cli_sessionloop() {
141 141
142 TRACE(("enter cli_sessionloop")); 142 TRACE(("enter cli_sessionloop"))
143 143
144 if (ses.lastpacket == SSH_MSG_KEXINIT && cli_ses.kex_state == KEX_NOTHING) { 144 if (ses.lastpacket == SSH_MSG_KEXINIT && cli_ses.kex_state == KEX_NOTHING) {
145 cli_ses.kex_state = KEXINIT_RCVD; 145 cli_ses.kex_state = KEXINIT_RCVD;
146 } 146 }
147 147
149 149
150 /* We initiate the KEXDH. If DH wasn't the correct type, the KEXINIT 150 /* We initiate the KEXDH. If DH wasn't the correct type, the KEXINIT
151 * negotiation would have failed. */ 151 * negotiation would have failed. */
152 send_msg_kexdh_init(); 152 send_msg_kexdh_init();
153 cli_ses.kex_state = KEXDH_INIT_SENT; 153 cli_ses.kex_state = KEXDH_INIT_SENT;
154 TRACE(("leave cli_sessionloop: done with KEXINIT_RCVD")); 154 TRACE(("leave cli_sessionloop: done with KEXINIT_RCVD"))
155 return; 155 return;
156 } 156 }
157 157
158 /* A KEX has finished, so we should go back to our KEX_NOTHING state */ 158 /* A KEX has finished, so we should go back to our KEX_NOTHING state */
159 if (cli_ses.kex_state != KEX_NOTHING && ses.kexstate.recvkexinit == 0 159 if (cli_ses.kex_state != KEX_NOTHING && ses.kexstate.recvkexinit == 0
161 cli_ses.kex_state = KEX_NOTHING; 161 cli_ses.kex_state = KEX_NOTHING;
162 } 162 }
163 163
164 /* We shouldn't do anything else if a KEX is in progress */ 164 /* We shouldn't do anything else if a KEX is in progress */
165 if (cli_ses.kex_state != KEX_NOTHING) { 165 if (cli_ses.kex_state != KEX_NOTHING) {
166 TRACE(("leave cli_sessionloop: kex_state != KEX_NOTHING")); 166 TRACE(("leave cli_sessionloop: kex_state != KEX_NOTHING"))
167 return; 167 return;
168 } 168 }
169 169
170 /* We should exit if we haven't donefirstkex: we shouldn't reach here 170 /* We should exit if we haven't donefirstkex: we shouldn't reach here
171 * in normal operation */ 171 * in normal operation */
172 if (ses.kexstate.donefirstkex == 0) { 172 if (ses.kexstate.donefirstkex == 0) {
173 TRACE(("XXX XXX might be bad! leave cli_sessionloop: haven't donefirstkex")); 173 TRACE(("XXX XXX might be bad! leave cli_sessionloop: haven't donefirstkex"))
174 return; 174 return;
175 } 175 }
176 176
177 switch (cli_ses.state) { 177 switch (cli_ses.state) {
178 178
179 case STATE_NOTHING: 179 case STATE_NOTHING:
180 /* We've got the transport layer sorted, we now need to request 180 /* We've got the transport layer sorted, we now need to request
181 * userauth */ 181 * userauth */
182 send_msg_service_request(SSH_SERVICE_USERAUTH); 182 send_msg_service_request(SSH_SERVICE_USERAUTH);
183 cli_ses.state = SERVICE_AUTH_REQ_SENT; 183 cli_ses.state = SERVICE_AUTH_REQ_SENT;
184 TRACE(("leave cli_sessionloop: sent userauth service req")); 184 TRACE(("leave cli_sessionloop: sent userauth service req"))
185 return; 185 return;
186 186
187 /* userauth code */ 187 /* userauth code */
188 case SERVICE_AUTH_ACCEPT_RCVD: 188 case SERVICE_AUTH_ACCEPT_RCVD:
189 cli_auth_getmethods(); 189 cli_auth_getmethods();
190 cli_ses.state = USERAUTH_REQ_SENT; 190 cli_ses.state = USERAUTH_REQ_SENT;
191 TRACE(("leave cli_sessionloop: sent userauth methods req")); 191 TRACE(("leave cli_sessionloop: sent userauth methods req"))
192 return; 192 return;
193 193
194 case USERAUTH_FAIL_RCVD: 194 case USERAUTH_FAIL_RCVD:
195 cli_auth_try(); 195 cli_auth_try();
196 cli_ses.state = USERAUTH_REQ_SENT; 196 cli_ses.state = USERAUTH_REQ_SENT;
197 TRACE(("leave cli_sessionloop: cli_auth_try")); 197 TRACE(("leave cli_sessionloop: cli_auth_try"))
198 return; 198 return;
199 199
200 /* 200 /*
201 case USERAUTH_SUCCESS_RCVD: 201 case USERAUTH_SUCCESS_RCVD:
202 send_msg_service_request(SSH_SERVICE_CONNECTION); 202 send_msg_service_request(SSH_SERVICE_CONNECTION);
203 cli_ses.state = SERVICE_CONN_REQ_SENT; 203 cli_ses.state = SERVICE_CONN_REQ_SENT;
204 TRACE(("leave cli_sessionloop: sent ssh-connection service req")); 204 TRACE(("leave cli_sessionloop: sent ssh-connection service req"))
205 return; 205 return;
206 206
207 case SERVICE_CONN_ACCEPT_RCVD: 207 case SERVICE_CONN_ACCEPT_RCVD:
208 cli_send_chansess_request(); 208 cli_send_chansess_request();
209 TRACE(("leave cli_sessionloop: cli_send_chansess_request")); 209 TRACE(("leave cli_sessionloop: cli_send_chansess_request"))
210 cli_ses.state = SESSION_RUNNING; 210 cli_ses.state = SESSION_RUNNING;
211 return; 211 return;
212 */ 212 */
213 213
214 case USERAUTH_SUCCESS_RCVD: 214 case USERAUTH_SUCCESS_RCVD:
217 #endif 217 #endif
218 #ifdef ENABLE_CLI_REMOTETCPFWD 218 #ifdef ENABLE_CLI_REMOTETCPFWD
219 setup_remotetcp(); 219 setup_remotetcp();
220 #endif 220 #endif
221 cli_send_chansess_request(); 221 cli_send_chansess_request();
222 TRACE(("leave cli_sessionloop: cli_send_chansess_request")); 222 TRACE(("leave cli_sessionloop: cli_send_chansess_request"))
223 cli_ses.state = SESSION_RUNNING; 223 cli_ses.state = SESSION_RUNNING;
224 return; 224 return;
225 225
226 case SESSION_RUNNING: 226 case SESSION_RUNNING:
227 if (ses.chancount < 1) { 227 if (ses.chancount < 1) {
238 238
239 default: 239 default:
240 break; 240 break;
241 } 241 }
242 242
243 TRACE(("leave cli_sessionloop: fell out")); 243 TRACE(("leave cli_sessionloop: fell out"))
244 244
245 } 245 }
246 246
247 void cli_session_cleanup() { 247 void cli_session_cleanup() {
248 248