Mercurial > dropbear
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 |